Como funciona a análise para fontes de dados de várias tabelas que usam relações

O uso de uma fonte de dados com várias tabelas relacionadas afeta o funcionamento da análise no Tableau. Como várias tabelas relacionadas têm domínios independentes e mantêm o nível de detalhe nativo, quando você arrasta os campos para a exibição:

  • Os dados são consultados no nível de detalhe natural.
  • Somente dados relevantes para uma visualização são consultados.
  • As relações entre as tabelas afetam os resultados da consulta. O fluxo de criação de uma visualização pode variar dependendo de como as tabelas de campos estão relacionadas entre si no modelo de dados, ou se elas não estão diretamente relacionadas.

Para obter uma visão geral dos aprimoramentos da fonte de dados e uma introdução ao uso de relações, assista a este vídeo de 5 minutos.

Veja também Não tenha medo de relacionamentos e essas publicações do blog do Tableau:

Observação: você ainda pode criar fontes de dados de tabela única no Tableau. É possível criar uma tabela lógica usando uma combinação de uniões de colunas, uniões de linhas, SQL personalizado etc. O comportamento da análise de tabela única no Tableau não mudou. A análise sobre uma única tabela lógica que contém uma mistura de dimensões e medidas funciona exatamente como no Tableau anterior à versão 2020.2.

Considerações para análise

Validação de relações

Você tem várias opções para validar o modelo de dados para análise. À medida que você cria o modelo para a fonte de dados, recomendamos acessar uma planilha, selecionar essa fonte de dados e criar uma visualização, para explorar contagens de registros, dados esperados, valores sem correspondência, nulos ou valores de medida repetidos. Tente trabalhar com campos em diferentes tabelas para garantir que tudo fique como você espera.

O que você deve analisar:

  • Suas relações estão no modelo de dados que usa os campos de correspondência corretos para as tabelas?
  • Adicionar vários pares de campo correspondentes tornaria a relação mais precisa?
  • Quais são os resultados de arrastar diferentes dimensões e medidas para a exibição?
  • Você está vendo o número esperado de linhas?
  • Se algumas configurações de Opções de desempenho foram alteradas nas configurações padrão, os valores que você está visualizando são os esperados? Se não você estiver visualizando, verifique as configurações ou redefina para o padrão.

Opções para validar as relações e o modelo de dados:

  • Cada tabela inclui uma contagem de registros, como um campo chamado TableName(Count) no nível de detalhe para essa tabela. Para ver a contagem de uma tabela, arraste o campo Contagem para a exibição. Para ver a contagem de todas as tabelas, selecione o campo Contagem de cada tabela no painel Dados e clique na Tabela de texto em Mostre-me.
  • Clique em Exibir dados no painel Dados para ver o número de linhas e dados por tabela. Além disso, antes de começar a criar relações, a visualização dos dados da fonte de dados antes ou durante a análise pode ser útil para dar uma noção do escopo de cada tabela. Para obter mais informações, consulte Visualizar dados subjacentes.
  • Arraste as dimensões para as linhas para ver o Número de linhas na barra de status. Para ver os valores sem correspondência, clique no menu Análise e selecione Layout da tabela > Mostrar linhas vazias ou Mostrar colunas vazias. Você também pode arrastar diferentes medidas para a exibição, como <YourTable>(Count) de uma das tabelas representadas na visualização. Isso garante que você verá todos os valores das dimensões nessa tabela.

Dica: se você quiser ver as consultas que estão sendo geradas para relações, poderá usar o Registrador de desempenho no Tableau Desktop.

  1. Clique no menu Ajuda e selecione Configurações e desempenho > Iniciar registro de desempenho.
  2. Arraste campos para a exibição para criar a visualização.
  3. Clique no menu Ajuda e selecione Configurações e desempenho > Parar registro de desempenho. A pasta de trabalho Registro de desempenho será aberta automaticamente.
  4. No painel Resumo de desempenho, em Eventos classificados por tempo, clique na barra “Execução de consulta” e visualize a consulta abaixo.

Outra opção mais avançada é usar o Tableau Log Viewer(O link abre em nova janela) no GitHub. Filtre uma palavra-chave específica usando end-protocol.query. Para obter mais informações, comece com a página wiki do Tableau Log Viewer(O link abre em nova janela) no GitHub.

Visualizações somente de dimensões

Ao usar uma fonte de dados de várias tabelas com tabelas relacionadas: se você criar uma visualização somente de dimensões, o Tableau usará as uniões de colunas internas e você não verá o domínio sem correspondência completo.

Para ver combinações parciais dos valores de dimensão, é possível:

  • Usar Mostrar linhas/colunas vazias para ver todas as linhas possíveis. Clicar no menu Análise e selecionar Layout da tabela > Mostrar linhas vazias ou Mostrar colunas vazias. Estar ciente de que essa configuração também acionará a densificação dos campos Data e Compartimento numérico, que podem ser indesejados.
  • Adicionar uma medida para a exibição, como <YourTable>(Count) de uma das tabelas representadas na visualização. Isso garante que você verá todos os valores das dimensões nessa tabela.

Para obter mais informações, consulte também Comportamento de valores incompatíveis das dimensões que podem surpreendê-lo e Solucionar problemas de análise de várias tabelas.

Quando usar os cálculos e expressões de LOD

Como o Tableau entende o nível de detalhe (LOD) das tabelas de entrada, não é necessário usar os cálculos de LOD para remover a duplicação indesejada devido a uniões de colunas.

Você ainda pode usar os cálculos de LOD para:

  • Lidar com a duplicação indesejada nas tabelas de origem.
  • Calcular agregações de vários níveis (por exemplo, uma média sobre uma soma)
  • Realizar a análise de coorte (por exemplo, calcular a data do primeiro pedido de cada cliente)

Se a dimensionalidade de um cálculo de LOD incluir campos de uma única tabela, esse cálculo de LOD será exibido tabela proprietária no painel Dados.

Exemplos de análise de várias tabelas

O conjunto de exemplos a seguir mostra como os dados podem ser consultados em várias tabelas relacionadas. Esta fonte de dados de várias tabelas contém uma breve lista de aparições de atores em diferentes papeis em filmes.

Uma linha na tabela Aparições significa que um Ator interpretou um Personagem em particular em um Filme específico. Nesse conjunto de dados, um Ator pode ter nenhuma ou mais Aparições.

Saiba mais sobre como as relações funcionam nessas publicações no blog do Tableau:

Exemplo 1: análise de uma única pergunta em dados com união de colunas versus dados relacionados

Quando você se conecta aos dados no Tableau antes da versão 2020.2, sua fonte de dados pode consistir em uma única tabela ou em várias tabelas, que tiveram a união de colunas e de linhas em uma única tabela desnormalizada. A partir do Tableau 2020.2, o Tableau reconhece e preserva dados normalizados das fontes de dados de várias tabelas, onde os dados da tabela permanecem separados e cada tabela mantém seu nível de detalhe nativo. Os exemplos a seguir mostram como a análise é diferente entre as fontes de dados de uma única tabela ou de várias tabelas.

Este exemplo mostra três tabelas de dados do filme: Aparições, Atores e Filmes.

Essas tabelas podem ter uniões de colunas, juntando a tabela Aparições com a tabela Atores em Ator = Ator e a tabela Aparições com a tabela Filmes em Filme = Filme. Se forem uniões de colunas externas completas de modo que as linhas não sejam perdidas, a saída final será assim. Observe que os campos usados nas cláusulas de união aparecem duas vezes.

Os dados reunidos em uma única tabela dessa forma são chamados de desnormalizados ou achatados.

Esses dados com união de colunas são dados achatados. Cada linha consiste na aparição de um ator como personagem em um filme (assim, John Rhys-Davies tem duas linhas para O Retorno do Rei, pois ele interpretou dois personagens). Portanto, a granularidade dos dados está no nível de um personagem em um filme. As informações relevantes em várias linhas são duplicadas. A data de estreia de O Retorno do Rei aparece duas vezes porque há dois personagens desse filme no conjunto de dados. A altura de John Rhys-Davies é listada cinco vezes porque há 5 combinações únicas de personagem/filme para ele como ator.

Portanto, esses dados achatados têm algumas características a serem observadas. Por exemplo, se você deseja calcular a altura do ator pela média bruta de seus filmes, pode supor que poderíamos destacar Altura em colunas e Bruto em Linhas e, em seguida, calcular a média em Bruto. Mas se você fizer isso, a exibição padrão não parecerá correta. Aqui John Rhys-Davies deveria ter 925 cm de altura, o que é mais de 30 pés.

Isso ocorre porque a agregação padrão é SOMA. Há 5 linhas nos dados para ele, então obtemos sua verdadeira altura de 185 cm cinco vezes. Você pode corrigir isso alterando a agregação em Height, digamos, média ou mínima. Isso efetivamente retorna o valor para apenas uma linha (já que são todos iguais).

Quando você altera a agregação, as alturas são muito mais realistas. Mas agora você precisa prestar atenção à média bruta. Lembre-se que o Tableau considera todas as cinco linhas para a altura de John Rhys-Davies. Quando você pensa em média bruta para os filmes em que ele estava, não deve ser a média de cinco linhas, mas sim a média de três filmes. Você não vai querer contar o bruto para O Retorno do Rei duas vezes só porque ele interpretou dois personagens nesse filme. Mas é isso que está acontecendo?

Fazendo algumas contas rápidas, os filmes O Senhor dos Anéis devem ter uma média de (869 + 923 + 1119)/3 ou US$ 970,30. No entanto, o valor no gráfico de dispersão é USD$ 990,60. A média atual é das cinco linhas (869 + 923 + 923 + 1119 + 1119)/5.

Isso não é tão fácil de corrigir como o problema de altura com a alteração de agregação. Você precisa usar uma expressão de nível de detalhe (LOD) para alterar o nível de detalhe que o Tableau analisa, passando do padrão — Aparição — para o nível do Filme. Você pode criar um cálculo para LOD Bruto como {FIXED [Movie] : MIN([Gross (USD millions)])} e, em seguida, calcular a média desse novo campo LOD Bruto para nossa exibição.

A expressão de LOD pode ser lida como “para cada filme, retornar seu mínimo Bruto”. Isso elimina o problema da duplicação porque o valor bruto é sempre retornado por filme, mesmo que a exibição seja criada com filme e ator.

Agora os números estão corretos. John Rhys-Davies tem 185 cm de altura e a média bruta de seus filmes neste conjunto de dados é de 970,3. Você precisaria entender como os dados estavam sendo replicados e como o Tableau agregou os dados para exibi-los, antes de garantir que os valores corretos fossem retornados.

Dados normalizados em várias tabelas

A criação de relações entre tabelas lógicas pode parecer semelhante à criação de uniões de colunas, mas em vez de achatar os dados em uma única tabela, com todas as replicações que isso implica, o Tableau permanece ciente das relações entre as tabelas. As informações são extraídas de cada tabela no nível de detalhe adequado e relacionadas a outros dados.

Na página Fonte de Dados, você não verá a exibição “completa” da grade da tabela achatada. Isso não existe. O Tableau mantém as três tabelas como são e apenas estabelece as relações, reunindo os dados pertinentes, conforme necessário, pela exibição.

Para criar o mesmo gráfico de dispersão, arraste a Altura e o Bruto para a exibição e defina o Bruto como a média. É isso. O Tableau analisa a maneira como os dados de cada tabela estão relacionados aos dados de outras tabelas relacionadas e infere como a altura deve ser exibida (por ator) e como a média bruta deve ser calculada (por filme).

Exemplo 2: dimensão de uma única tabela

Se as dimensões na visualização vierem de uma única tabela, o Tableau consulta apenas uma tabela e mostra os resultados para todo o domínio. Você pode adicionar medidas e ainda ver todo o domínio.

Por exemplo, usando a fonte de dados Aparições em filme apresentada acima, a adição do campo Ator a uma visualização resulta na visualização a seguir:

Como a única dimensão na visualização veio da tabela Atores, o Tableau executará uma consulta apenas na tabela Atores. Todos os atores que aparecem na tabela Atores são exibidos na visualização, independentemente de terem Aparições.

Trazer o campo Ator de aparições para a exibição como uma medida e aplicar uma agregação COUNT cria uma exibição que mostra o número de aparições por atores. Observe que Sigourney Weaver não tem aparições, mas ainda assim seu nome está na exibição.

Exemplo 3: dimensões de várias tabelas

Se as dimensões na exibição são de várias tabelas, o Tableau encontra a tabela que relaciona todas as dimensões e mostra o domínio dessa tabela. Como resultado, alguns valores de dimensão vistos no Exemplo 1 mudam.

Por exemplo, arrastar um campo da tabela Filmes para a visualização muda a consulta. Como as tabelas Filmes e Atores estão relacionadas com a tabela Aparições, a consulta retorna apenas os pares Ator/Filme existentes na tabela Aparições.

Como Sigourney Weaver não tem Aparições neste conjunto de dados (e, portanto, não está relacionada a nenhum dos Filmes no conjunto de dados), a visualização dos pares Ator/Filme não mostra essa atriz.

Exemplo 4: medidas que não podem ser divididas por uma dimensão

Se uma medida não pode ser dividida por uma dimensão, o Tableau replica a medida nessa dimensão.

A próxima visualização mostra o valor total bruto por Filme. Uma vez que ambos os campos vêm da tabela Filmes, o Tableau irá consultar apenas a tabela Filmes.

A tabela Filmes inclui os recebimentos Brutos já agregados para cada filme, como mostrado na visualização a seguir (o bruto para Guerra Infinita não estava disponível no momento em que esse conjunto de dados foi criado e é mostrado como zero).

Quando você adiciona o Ator a essa visualização, o Tableau sabe que não pode decompor os recebimentos Brutos do filme por Ator, pois essas informações mais granulares não estão disponíveis no modelo de dados. Em vez disso, o Tableau mostra os recebimentos Brutos do filme para cada filme, replicados entre os atores.

Exemplo 5: dimensão que não está hierarquicamente relacionada a uma medida

A remoção da dimensão Filme da visualização anterior consulta a soma da medida Bruta do filme para cada Ator. O resultado é o Bruto do filme agregado para cada filme em que o ator apareceu.

Nesse caso, não há uma relação hierárquica entre a dimensão, o ator e a medida, Bruto do filme - vários atores podem ter aparecido no mesmo filme. Por exemplo, Benedict Cumberbatch e Chris Hemsworth apareceram em Dr. Estranho. Nesse caso, o Tableau inclui o Bruto do filme para Dr. Estranho no total de ambos os atores.

Como o mesmo valor Bruto do filme está incluído no total de vários atores, o Tableau não vai somar diretamente esses valores.

No entanto, quando os totais são mostrados para esta visualização, observe que o Tableau calcula corretamente o total Bruto do Filme, sem incluir filmes duplicados.

 

Solucionar problemas de análise de várias tabelas

As seguintes situações são possíveis com tabelas de várias tabelas e relacionadas. Esta tabela descreve cenários conhecidos e descrições de alto nível de como solucionar problemas de sua análise.

Situação da análise   Descrição
União de colunas interna para visualizações somente de dimensão   Talvez você não veja imediatamente todos os valores que esperava ao adicionar várias dimensões à mesma exibição. Ou, você pode notar que adicionar uma nova dimensão à visualização de uma tabela diferente faz com que alguns valores desapareçam da visualização.

O Tableau usará consultas que preservam a combinação de valores que realmente existem nos dados. Isso significa que você verá linhas que seriam produzidas por uma união de colunas interna das tabelas fornecendo dimensões para a visualização.

Se você quiser ver combinações parciais dos valores de dimensão, poderá ativar Mostrar linhas/colunas vazias para ver todas as linhas possíveis ou adicionar uma medida, como <MyTable>(Count), em uma das tabelas representadas na exibição para garantir que você veja todos os valores das dimensões nessa tabela.
Constantes em cálculos   Em uma fonte de dados de várias tabelas, os valores constantes se comportam como se viessem de sua própria tabela com uma única linha. Se você agregar um valor constante, ele se comportará como se o agregado estivesse em uma única linha. Sum(10) será sempre igual a 10. Avg(10) também será sempre igual a 10. Count(10) será sempre igual a 1.

Para garantir a retrocompatibilidade, os valores constantes em uma fonte de dados de tabela lógica única se comportarão como se o valor constante fosse replicado para cada valor na tabela.

As constantes nos cálculos de nível de linha não alteram o nível de detalhe do cálculo da linha. O cálculo [Sales] + 10 vai se comportar como se tivesse vindo da mesma tabela do campo [Sales].
Como forçar a união de colunas externa   O Tableau garante que todos os valores de medida sejam representados na visualização (com todas as combinações de valores de dimensão que realmente ocorrem nos dados). Então, se você quiser garantir que está vendo todos os valores possíveis em seus dados, incluindo "nulos sem correspondência", poderá fazer isso trazendo medidas para a exibição de cada tabela na planilha.
Eu não estou vendo os valores de medida esperados em um cálculo de tabela cruzada   O domínio de um cálculo é a união de colunas interna de suas entradas. Se não houver valores correspondentes de todas as entradas do cálculo da medida, eles não serão incluídos no cálculo da medida.

Considere usar um cálculo LOD para mover os valores de medida para o mesmo objeto antes de criar o cálculo de nível de linha.
O cálculo para alternar entre campos de diferentes tabelas lógicas gera resultados inesperados   Se você tiver um cálculo que alterna entre campos de nível de linha, seja usando uma instrução de caso, ou uma função como "IFNULL", poderá ver resultados inesperados, porque esse cálculo está sendo calculado para cada linha, onde a linha é a união de colunas interna entre as entradas do cálculo.

Uma abordagem melhor é alternar entre valores agregados, em vez de tentar alternar no cálculo do nível de linha. Isso também produzirá melhor desempenho em cenários de tabela única.

Como alternativa, este é apenas um problema para cálculos que se estendem entre tabelas, Por isso, o uso de cálculos de LOD para trazer todos os campos para a mesma tabela também funcionará.

Não faça isso:
SUM( IF [Parameter] == "Foo" THEN [Field 1] ELSE [Field 2] END )

Faça isto:
IF [Parameter] == "Foo" THEN SUM([Field 1]) ELSE SUM([Field 2]) END
Nulos sem correspondência inesperados   É possível ver valores de medida associados a um valor de dimensão nulo que você não esperava. Isso pode ser um sinal de que as relações na fonte de dados foram configuradas incorretamente. Também pode indicar que existem valores realmente sem correspondência na tabela que contém a medida, que não têm linha correspondente na tabela de dimensão.

No passado, esses dados seriam perdidos se o tipo de união de colunas errado fosse selecionado. Quando você usa relações, esses valores sem correspondência são mantidos. Se você não quiser ver os valores sem correspondência, poderá excluí-los usando um filtro.
Valores agregados incorretos   Você está usando relações ou união de colunas? Com as relações, os agregados são computados corretamente por padrão. Ao usar as uniões de colunas, talvez seja necessário escrever cálculos de LOD para deduplicar valores.

Você definiu incorretamente Opções de desempenho em relações? Tente redefinir as Opções de desempenho como o padrão e veja se isso produz as agregações corretas.
As dimensões replicam valores de medida em vez de particioná-los.

Os filtros de dimensão não colocam as medidas em subconjuntos.
  Verifique se os campos usados para definir relações estão corretos.
O Tableau está gerando muitas consultas ou consultas com muitas uniões de colunas à esquerda   Verifique os registros ou o registro de desempenho para ver quantas consultas são geradas e quantas uniões de colunas à esquerda são usadas. Com os novos recursos de modelagem de dados, o Tableau gera consultas com uniões de colunas à esquerda e/ou consultas adicionais para garantir que valores de medida sem correspondência sejam sempre incluídos na visualização. Se você não precisar ver os valores sem correspondência, use filtros para remover os valores sem correspondência (NULL) da sua visualização. Isso deve resultar em menos consultas.

Se você sabe que seus dados não têm valores sem correspondência, pode definir a configuração de Integridade referencial para cada relação como "Todos os valores correspondem" em Opções de desempenho. Isso também resultará em menos consultas.

Você também pode reduzir a complexidade da visualização para reduzir o número de consultas geradas. Remover medidas e ocultar controles de Filtro são formas fundamentais para simplificar consultas de dados relacionados a várias tabelas.
As consultas têm muitas subconsultas   Verifique os registros ou o registro de desempenho para ver a complexidade das consultas que o Tableau gera.

O Tableau gera automaticamente subconsultas para deduplicar dados, quando necessário, para gerar agregados corretos. Isso é semelhante às consultas geradas por cálculos de LOD.

Se você sabe que as relações entre as tabelas lógicas nos dados têm cardinalidade de muitos para um ou de um para um, pode definir essas informações de cardinalidade nas Opções de desempenho da relação. Isso permitirá que o Tableau elimine subconsultas desnecessárias, pois saberá que nenhuma duplicação pode acontecer.
Eu estava usando uniões de colunas para filtrar dados   Na versão 2020.2, o Tableau vai trabalhar arduamente para recuperar valores sem correspondência. Às vezes, isso significa que ele usará uma união de colunas à esquerda onde você pode ter especificado uma união de colunas interna para filtrar os dados intencionalmente.

Se você filtrar os valores sem correspondência que são trazidos por essa união de colunas, o Tableau poderá otimizar a consulta de volta para uma união de colunas interna.

Dependendo do seu cenário específico, pode fazer sentido modelar essa união de colunas interna como uma união de colunas física em uma tabela lógica. Isto será eficiente se uma tabela com medidas estiver sendo usada para filtrar uma tabela de dimensão, pois não introduzirá a replicação adicional de medidas.
Agradecemos seu feedback!