Como funcionam as expressões de nível de detalhe no Tableau
Este artigo explica como as expressões de nível de detalhe são calculadas e como elas funcionam no Tableau. Para obter mais informações sobre as expressões de LOD e como elas funcionam, consulte o whitepaper Entendendo as Expressões de nível de detalhe (LOD)(O link abre em nova janela) no site do Tableau.
Expressões no nível de linha e expressões no nível da exibição
No Tableau, as expressões que fazem referência a colunas de fonte de dados desagregadas são calculadas para cada linha na tabela subjacente. Nesse caso, a dimensionalidade da expressão é nível de linha. Este é um exemplo de expressão de nível de linha:
[Sales] / [Profit]
Esse cálculo será avaliado em cada linha do banco de dados. Para cada linha, o valor de Vendas (Sales) será dividido pelo valor de Lucro (Profit), criando uma nova coluna com o resultado da multiplicação (um raio de lucro).
Se um cálculo for criado com essa definição, salve-o com o nome [ProfitRatio] e arraste-o do painel Dados para uma divisória; como de costume, o Tableau agrega o campo calculado para a exibição:
SUM([ProfitRatio])
Por outro lado, as expressões que fazem referência a colunas de fonte de dados agregadas são calculadas na dimensionalidade definida pelas dimensões na exibição. Nesse caso, a dimensionalidade da expressão é nível de exibição. Este é um exemplo de expressão de nível de exibição:
SUM(Sales) / SUM(Profit)
Se você arrastar esse cálculo para uma divisória (ou digitá-lo diretamente em uma divisória como um cálculo ad-hoc), o Tableau irá inseri-lo em uma função AGG:
AGG(SUM(Sales) / SUM(Profit))
Isso é conhecido como um cálculo de agregação. Para obter mais detalhes, consulte Funções de agregação no Tableau(O link abre em nova janela).
A dimensão e os campos colocados em qualquer local destacado na imagem a seguir contribuem para o nível de detalhe da exibição:
Antes de ser oferecido suporte no Tableau às expressões de nível de detalhe, não era possível criar cálculos em um nível de detalhe que não fosse o nível de exibição. Por exemplo, se você tentar salvar a expressão a seguir, o Tableau exibirá a mensagem de erro “Não é possível misturar argumentos agregados e não agregados com esta função”:
[Sales] – AVG([Sales])
A intenção do usuário neste caso foi comparar as vendas de cada loja com a média de vendas de todas lojas. Agora isso pode ser conseguido com uma expressão de nível de detalhe:
[Sales] - {AVG([Sales])}
Isso é conhecido como expressão de nível de detalhe com escopo de tabela. Consulte Escopo de tabela
Limitações das expressões de nível de detalhe
As restrições e limitações a seguir aplicam-se a expressões de nível de detalhe. Consulte também Restrições de fonte de dados para expressões de nível de detalhe.
As expressões de nível de detalhe que fazem referência a medidas de ponto flutuante podem se comportar de modo não confiável quando usadas em uma exibição que exige a comparação dos valores na expressão. Para obter mais detalhes, consulte Entendendo os tipos de dados nos cálculos(O link abre em nova janela).
As expressões de nível de detalhe não são mostradas na página Fonte de dados. Consulte Página Fonte de dados.
Ao referenciar um parâmetro em uma declaração de dimensionalidade, sempre use o nome do parâmetro, e não o valor.
Com a combinação de dados, o campo de vinculação da primeira fonte de dados deve estar na exibição antes de você poder usar um nível de expressão de detalhe na fonte de dados secundária. Consulte Solucionar problemas de combinação de dados.
Além disso, algumas fontes de dados têm limites de complexidade. O Tableau não desativará os cálculos para esses bancos de dados, mas os erros de consulta podem acontecer caso os cálculos se tornem muito complexos.
Expressões de nível de detalhe podem ser dimensões ou medidas
Quando você salva uma expressão de nível de detalhe, o Tableau a adiciona à área Dimensões ou à área de Medidas no painel de Dados.
As expressões de nível de detalhe FIXED podem resultar em medidas ou dimensões, dependendo do campo subjacente na expressão de agregação. Portanto, MIN([Date])} será uma dimensão porque [Date] é uma dimensão, e {fixed Store : SUM([Sales])} será uma medida porque [Sales] é uma medida. Quando uma expressão de nível de detalhe FIXED é salva como uma medida, você tem a opção de movê-la para dimensões.
As expressões de nível de detalhe INCLUDE e EXCLUDE são consideradas sempre medidas.
Filtros e expressões de nível de detalhe
Existem vários tipos diferentes de filtro no Tableau e eles são executados na ordem mostrada a seguir, de cima para baixo.
O texto à direita mostra onde as expressões de nível de detalhe são avaliadas nesta sequência.
Os filtros de extração (em laranja) só serão relevantes se você estiver criando uma extração do Tableau a partir de uma fonte de dados. Os filtros de cálculos de tabela (em azul escuro) são aplicados depois que os cálculos são executados e, portanto, ocultam marcas sem filtrar os dados subjacentes utilizados nos cálculos.
Se você estiver familiarizado com SQL, pense nos filtros de medida como equivalentes à cláusula HAVING em uma consulta e nos filtros de dimensão como equivalentes à cláusula WHERE.
Como os cálculos FIXED são aplicados antes dos filtros de dimensão, a menos que você promova os campos na divisória Filtro para Usar filtros de contexto, eles serão ignorados. Por exemplo, considere se você tem o seguinte cálculo em uma divisória de uma exibição, juntamente com [State] em uma divisória diferente:
SUM([Sales]) / ATTR({FIXED : SUM([Sales])})
Este cálculo lhe dará a proporção das vendas de um estado em relação ao total de vendas.
Se você colocar [State] na divisória Filtros para ocultar alguns dos estados, o filtro afetará apenas o numerador no cálculo. Como o denominador é uma expressão de nível de detalhe FIXED, ele dividirá as vendas para os estados na exibição em relação ao total de vendas para todos os estados, incluindo as que tenham sido filtradas fora da exibição.
As expressões de nível de detalhe INCLUDE e EXCLUDE são consideradas após os filtros de dimensão. Por isso, se você deseja que os filtros se apliquem à sua expressão de nível de detalhe FIXED, mas não quer usar filtros de contexto, considere a possibilidade de reescrevê-los como expressões INCLUDE ou EXCLUDE.
Agregação e expressões de nível de detalhe
O nível de detalhe da exibição determina o número de marcas na exibição. Ao adicionar uma expressão de nível de detalhe à exibição, o Tableau deve reconciliar dois níveis de detalhe: o que está na exibição e o que está na sua expressão.
O comportamento de uma expressão de nível de detalhe na exibição varia de acordo com o nível de detalhe da expressão: mais áspero, mais afiado ou correspondente ao nível de detalhe da exibição. Mas o que significa "mais áspero" ou "mais afiado", neste caso?
Quando a expressão de nível de detalhe é mais áspera que o nível de detalhe presente na exibição
Uma expressão que tem um nível de detalhe mais áspero que aquele da exibição é aquela que consulta um subconjunto das dimensões da exibição. Por exemplo, para uma exibição que continha as dimensões [Categoy] e [Segment], era possível criar uma expressão de nível de detalhe que usasse somente uma das seguintes dimensões:
{FIXED [Segment] : SUM([Sales])}
Neste caso, a expressão tem um nível de detalhe mais áspero que o da exibição. Os valores são baseados em uma dimensão ([Segment]), enquanto a exibição baseia-se em duas dimensões ([Segment] e [Category]).
O resultado é que o uso da expressão de nível de detalhe na exibição faz com que determinados valores sejam replicados, ou seja, apareçam várias vezes.
Valores replicados são úteis para comparar valores específicos com valores médios dentro de uma categoria. Por exemplo, o seguinte cálculo subtrai as vendas médias para um cliente do total de vendas médias:
[Sales] - {FIXED [Customer Name] : AVG([Sales])}
Quando valores são replicados, alterar a agregação do campo relevante na exibição (por exemplo, de AVG para SUM) não irá alterar o resultado da agregação.
Quando a expressão de nível de detalhe é mais afiada que o nível de detalhe presente na exibição
Uma expressão que tem um nível de detalhe mais áspero que aquele da exibição é aquela que consulta um superconjunto das dimensões da exibição. Ao usar tal expressão na exibição, o Tableau irá agregar os resultados para o nível da exibição. Por exemplo, a expressão de nível de detalhe a seguir consulta duas dimensões:
{FIXED [Segment], [Category] : SUM([Sales])}
Quando essa expressão é usada em uma exibição que contenha somente [Segment] como nível de detalhe, os valores devem ser agregados. Se arrastar a expressão para uma divisória, você verá algo assim:
AVG([{FIXED [Segment]], [Category]] : SUM([Sales]])}])
Uma agregação—neste caso, média—é atribuída automaticamente ao Tableau. Você pode mudar a agregação conforme necessário.
Adição de expressões de nível de detalhe a exibições
A agregação ou replicação de uma expressão de nível de detalhe é determinada pelo tipo da expressão (FIXED, INCLUDE ou EXCLUDE), e pela granularidade da expressão (mais áspera ou mais afiada que a da exibição).
As expressões de nível de detalhe INCLUDE poderão ter o mesmo nível de detalhe que a exibição ou um nível de detalhe mais afiado que o da exibição. Portanto, os valores nunca serão replicados.
As expressões de nível de detalhe FIXED poderão ter um nível de detalhe mais afiado, mais áspero ou o mesmo que o da exibição. A necessidade de agregar os resultados de um nível de detalhe FIXED depende das dimensões que estiverem na exibição.
As expressões de nível de detalhe EXCLUDE sempre causam a aparição de valores replicados na exibição. Quando cálculos que incluem expressões de nível de detalhe EXCLUDE são colocados em uma divisória, o Tableau torna a agregação ATTR como padrão (ao contrário de SUM ou AVG) para indicar que a expressão na verdade não está sendo agregada, e que qualquer alteração na agregação não afetará a exibição.
Expressões de nível de detalhe sempre são envolvidas por um agregado quando são adicionadas a uma divisória na exibição, a não ser que sejam usadas como dimensões. Então, se você clicar duas vezes em uma divisória e digitar
{FIXED[Segment], [Category] : SUM([Sales])}
e, em seguida, pressionar Enter para validar a expressão, o que você verá na divisória será
SUM({FIXED[Segment], [Category] : SUM([Sales])})
Porém, se você clicar duas vezes na divisória para editar a expressão, o que verá no modo de edição será a expressão original.
Quando você envolve uma expressão de nível de detalhe ao criá-la, o Tableau usa a agregação especificada, em vez de uma designada, quando qualquer cálculo (incluindo a expressão) for colocado em uma divisória. Quando nenhuma agregação é necessária (porque o nível de detalhe da expressão é mais áspero que o da exibição), a agregação especificada continua sendo mostrada quando a expressão estiver em uma divisória, porém é ignorada.
Restrições de fonte de dados para expressões de nível de detalhe
Em algumas fontes de dados, somente versões mais recentes aceitam expressões de nível de detalhe. Algumas fontes de dados não aceitam expressões de nível de detalhe de forma alguma.
Além disso, algumas fontes de dados têm limites de complexidade. O Tableau não desativará os cálculos para esses bancos de dados, mas os erros de consulta podem acontecer caso os cálculos se tornem muito complexos.
Fonte de dados | Suporte |
Actian Vectorwise | Não suportado. |
Amazon EMR Hadoop Hive | Compatível com Hive 0.13 e posterior. |
Amazon Redshift | Compatível. |
Aster Database | Compatível com a versão 4.5 e posterior. |
Cloudera Hadoop | Compatível com Hive 0.13 e posterior. |
Cloudera Impala | Compatível com Impala 1.2.2 e posterior. |
Cubos (fontes de dados multidimensionais) | Não suportado. |
DataStax Enterprise | Não suportado. |
EXASOL | Compatível. |
Firebird | Compatível com a versão 2.0 e posterior. |
ODBC genérico | Limitado. Depende da fonte de dados específica. |
Google BigQuery | Compatível com SQL padrão, incompatível com SQL legado. |
Hortonworks Hadoop Hive | Compatível com Hive 0.13 e posterior. Na versão 1.1 do HIVE, as expressões de nível de detalhe que produzem uniões cruzadas não são confiáveis. As uniões cruzadas ocorrem quando não há nenhum campo explícito para realizar a união. Por exemplo, em uma expressão de nível de detalhe |
IBM BigInsights | Compatível. |
IBM DB2 | Compatível com a versão 8.1 e posterior. |
MarkLogic | Compatível com a versão 7.0 e posterior. |
Microsoft Access | Não suportado. |
Conexões baseadas no Microsoft Jet (conectores herdados para Microsoft Excel, Microsoft Access e texto) | Não suportado. |
Microsoft SQL Server | SQL Server 2005 e posterior. |
MySQL | Compatível. |
IBM PDA (Netezza) | Compatível com a versão 7.0 e posterior. |
Oracle | Compatível com a versão 9i e posterior. |
Actian Matrix (ParAccel) | Compatível com a versão 3.1 e posterior. |
Pivotal Greenplum | Compatível com a versão 3.1 e posterior. |
PostgreSQL | Compatível com a versão 7 e posterior. |
Progress OpenEdge | Compatível. |
SAP HANA | Compatível. |
SAP Sybase ASE | Compatível. |
SAP Sybase IQ | Compatível com a versão 15.1 e posterior. |
Spark SQL | Compatível. |
Splunk | Não suportado. |
Extração de dados do Tableau | Compatível. |
Teradata | Compatível. |
Vertica | Compatível com a versão 6.1 e posterior. |
Consulte também
Criar expressões de nível de detalhe no Tableau
Entendendo as Expressões de nível de detalhe (LOD)(O link abre em nova janela)