Não tenha medo de cálculos nas relações
Os cálculos podem ser intimidadores. Os cálculos em uma fonte de dados que usa relações podem parecer mais intimidadores. Mas não há razão para ter medo de cálculos nas relações.
Observação: se você ainda não se sente à vontade com os princípios das fontes de dados que usam relações, talvez seja útil ler Não tenha medo de relacionamentos, antes de mergulhar neste tópico.
Tipos de cálculo
Um cálculo em nível de linha é realizado para cada registro nos dados. Por exemplo, cada transação de vendas tem um valor de vendas, o preço, possivelmente ajustado pela porcentagem de desconto: Price * (1- ZN([Discount]))
. É calculado linha por linha para cada transação – os resultados podem ser considerados como a adição de uma nova coluna na fonte de dados para o Valor de vendas.
Também existem os cálculos agregados. Os cálculos agregados são realizados no nível de detalhe da visualização e seu valor depende da estrutura da exibição. As contagens são um exemplo de cálculo agregado. O valor de Count([Title])
depende se estamos olhando para a contagem por formato, autor ou dia de vendas.
Consulte nosso blog(O link abre em nova janela) para obter mais informações sobre os tipos de cálculos.
Nível de detalhe da tabela
Como cada tabela na fonte de dados do Tableau pode ter seu próprio nível de detalhe, a tabela à qual um cálculo está associado tem um grande impacto. Por exemplo, historicamente no Tableau (antes da versão 2020.2, antes das relações), era possível contar o número de registros na fonte de dados criando e somando um cálculo com o valor constante 1
. 1
foi atribuído a cada linha na fonte de dados para que a soma fosse igual ao número de linhas.
Agora, no entanto, esse cálculo teria um valor de 1
. Não há um nível de detalhe global para a fonte de dados inteira, e um cálculo constante reside na área não atribuída na parte inferior do painel Dados. Tem seu próprio nível de detalhe. A soma de 1
é simplesmente 1
.
Conforme mencionado anteriormente, os cálculos que têm o mesmo nível de detalhe de uma tabela – geralmente porque contêm um campo na tabela – pertencem a essa tabela no painel Dados. Por exemplo, a concatenação de Nome e Sobrenome para obter o nome completo de cada autor (ou seja, [First Name] + " " + [Last Name]
) é colocada na tabela Autor.
No entanto, se usarmos campos de várias tabelas em um cálculo, o cálculo irá para a área não atribuída na parte inferior do painel Dados. Isso é chamado de cálculo em nível de linha entre tabelas e requer uma união de colunas em nível de linha das tabelas envolvidas, o que pode impactar o desempenho. (Verifique se a cardinalidade correta está definida nas Opções de desempenho da relação).
Atribuição do nível de detalhe
Como o nível de detalhe de uma tabela controla o que os resultados de um cálculo representam, é importante ter cálculos nas tabelas apropriadas. Uma expressão de nível de detalhe FIXED pode ser usada para receber um cálculo em uma tabela específica. O campo em que a expressão é FIXED (a declaração de dimensão(O link abre em nova janela)) determina o nível de detalhe dos resultados.
Exemplo: book tours do autor
P: de quantos eventos de book tour cada autor está participando?
R: este número deve "pertencer" a cada autor, portanto, deve constar na tabela Autor.
- Eventos de book tour do autor =
{FIXED [Author Name] : SUM([Book Tour Events])}
- (Pode-se considerar em linguagem simples da seguinte forma: "para cada autor, calcule o total do número de eventos de book tour associados a ele")
P: quantos autores não estão realizando os book tours?
R: é tentador experimentar um cálculo como
COUNTD(IF ISNULL([Book Tour Events]) THEN ([Author Name]) END)
.- (Pode-se considerar em linguagem simples da seguinte forma: "se os Eventos de book tour forem nulos, retorne o nome do autor. Conte cada nome de autor original")
No entanto, esse é um cálculo em nível de linha entre tabelas, pois os Eventos de book tour estão na tabela Série e o Nome do autor está na tabela Autor. E os cálculos entre tabelas como esse usam uniões de colunas internas, o que significa que a linha é retirada dos resultados da união de colunas quando não há valores correspondentes em ambas as tabelas. O que, por sua vez, significa que estamos pedindo ao Tableau para contar algo que não existe. Observe que, se os dois campos estivessem na mesma tabela, seria uma boa maneira de fazer isso. Não há nada de errado com o cálculo ele está, exceto o fato de que não funciona bem com a estrutura da fonte de dados.
Em vez disso, precisamos indicar a presença ou ausência de eventos de book tour para cada autor – e manter esses resultados na tabela Autor. Uma vez que cada autor é marcado como "participante de um book tour" ou não, podemos contar o número que não está realizando book tours.
- Participante de book tour? =
IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN "No" ELSE "Yes" END
- (Pode-se considerar em linguagem simples da seguinte forma: "Para cada autor, conte o número de eventos de book tour. Se essa contagem for zero, rotule o autor como "Não", caso contrário, rotule-o como "Sim"." Ao nomear o campo "Participante de book tour?", as entradas de não e de sim irão se alinhar.)
Agora podemos contar o número de não e responder à pergunta original.
Se nosso cálculo for Autores sem book tours = IF [Book tour participant?]= "No" THEN ([Author Name]) END
, teremos uma lista de autores que não estão realizando book tours. (Pode-se considerar em linguagem simples da seguinte forma "para cada autor em que o campo Participante de book tour? for não, liste o nome do autor.")
Se nosso cálculo for COUNTD(IF [Book tour participant?]= "No" THEN ([Author Name]) END)
, obteremos uma resposta numérica que ficará na área não atribuída na parte inferior do painel Dados. Por quê? Porque esse cálculo é agregado.
Pergunta bônus:
Também é possível usar a estrutura do cálculo Participante de book tour? diretamente para retornar a lista de nomes de autores. IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN ([Author Name]) END
. Para onde iria esse cálculo no painel Dados? Por quê? Experimente em sua própria cópia do Tableau Desktop ou baixe esta pasta de trabalho para ver. (Requer o Tableau Desktop 2020.2 ou posterior. Uma vez nas pastas de trabalho, clique com o botão direito do mouse no cálculo no painel Dados e selecione Editar para abrir o editor de cálculo e ver uma explicação nos comentários de cálculo.)
Recursos relacionados
Você está se sentindo um pouco confuso e quer voltar uma etapa? Experimente Não tenha medo de relacionamentos.
Pronto para continuar explorando como fazer análises complexas com relações? Confira Não tenha medo de relações mais profundas.
Para obter mais informações sobre os fundamentos técnicos das relações diretamente da equipe de Gestão de produtos, confira a série sobre relações no Blog do Tableau.
- Relações, parte 1: apresentação da nova modelagem de dados no Tableau(O link abre em nova janela)
- Relações, parte 2: dicas e truques(O link abre em nova janela)
- Relações, parte 3: fazer perguntas em várias tabelas relacionadas(O link abre em nova janela)
Veja também podcasts de vídeo sobre relacionamentos em Análises de ação(O link abre em nova janela), como Por que o Tableau inventou os relacionamentos?(O link abre em nova janela) Clique em "Podcast de vídeo" na Biblioteca(O link abre em nova janela) para ver mais.