Pular para o conteúdo principal

Expressões de nível de detalhe

As expressões de nível de detalhe permitem especificar uma granularidade na qual as agregações são calculadas, que é diferente do nível de detalhe das suas visualizações. Esta página explica como usar expressões de nível de detalhe em dashboards AI/BI .

O que são expressões de nível de detalhe?

As expressões de nível de detalhe permitem especificar exatamente quais dimensões devem ser usadas no cálculo de um agregado, independentemente das dimensões presentes na sua visualização. Isso lhe dá um controle preciso sobre o escopo de seus cálculos. As expressões de nível de detalhe podem ser dimensões ou medidas.

Existem dois tipos de expressões de nível de detalhe:

  • Nível de detalhe fixo : Agregação em um conjunto predefinido de dimensões especificadas na própria expressão, ignorando todas as outras dimensões na visualização.
  • Nível de detalhe mais grosseiro : Agregue em um nível mais grosseiro do que a visualização, excluindo uma dimensão específica do conjunto de agrupamento.

As expressões de nível de detalhe são criadas usando funções de janela em cálculos dataset , seguindo padrões de uso específicos.

Quando usar expressões de nível de detalhe

Utilize expressões de nível de detalhe quando precisar:

  • Calcule as porcentagens do total (por exemplo, a participação de cada categoria no total de vendas).
  • Compare os valores individuais com os valores agregados de todo o dataset(por exemplo, vendas versus vendas médias).
  • Crie métricas em nível de coorte ou segmento que permaneçam constantes em diferentes agrupamentos.
  • Realize agregações multiníveis em um único cálculo.

Definição de expressões em um nível fixo de detalhes.

Uma expressão com nível de detalhe fixo calcula um valor agregado na granularidade que você definir, ignorando as dimensões da sua visualização. Expressões de nível de detalhe fixo são dimensões e são implementadas usando funções de janela escalar com cláusulas PARTITION BY .

Sintaxe

SQL
<AGGREGATE_FUNCTION>(<column>) OVER (PARTITION BY <dimension1>, <dimension2>, ...)

Para agregar em todo o dataset, omita a cláusula PARTITION BY e deixe parênteses vazios após OVER.

Quando usar um nível de detalhe fixo

Utilize expressões com nível de detalhe fixo quando precisar de:

  • Sem dependência de agrupamentos de visualização: métricas que possuem particionamento estático em todos os usos.
  • Agregados em nível de conjunto de dados: Agregados globais comparados com outros níveis de linha ou agrupamentos (por exemplo, percentual do total de vendas por região).
  • Hierarquias multiníveis: métricas de nível detalhado e de nível agregado na mesma visualização.

Exemplo: totais de vendas regionais

Suponha que você tenha um dataset de vendas e queira mostrar as vendas de cada produto juntamente com o total de vendas da sua região. Aqui estão alguns dados de exemplo:

Região

Produto

Vendas

Oeste

Laptop

5000

Oeste

Rato

500

Leste

Laptop

6000

Leste

Monitoramento

3000

Para calcular o total de vendas por região, utilize:

SQL
SUM(Sales) OVER (PARTITION BY Region)

Resultado:

Região

Produto

Vendas

Total da região

Oeste

Laptop

5000

5500

Oeste

Rato

500

5500

Leste

Laptop

6000

9000

Leste

Monitoramento

3000

9000

Cada linha mostra as vendas individuais dos produtos e o total fixo para a respectiva região. O total da região permanece constante, independentemente de como você filtre ou agrupe por produto.

Exemplo: Percentagem do total

Expressões com nível de detalhe fixo podem ser compostas em expressões mais complexas, incluindo medidas calculadas que realizam cálculos de "percentagem do total". Para isso, você pode referenciar expressões de nível de detalhe fixo dentro de uma expressão de medida para que sejam dinâmicas em relação aos agrupamentos de visualização.

Por exemplo, podemos primeiro definir total_sales como uma expressão de nível de detalhe fixo como um cálculo independente que opera sobre todo o dataset:

SQL
SUM(sales) OVER ()

Em seguida, podemos referenciar a expressão de nível de detalhe fixo em uma definição de medida calculada:

SQL
SUM(Sales) / ANY_VALUE(total_sales)

A expressão acima pode ser usada como uma medida em visualizações que agrupam por qualquer dimensão, como produto, para mostrar a porcentagem do total de vendas de cada produto distinto.

nota

Uma expressão com um nível fixo de detalhe precisa ser encapsulada em uma função agregada para ser usada no cálculo de uma medida. Se o resultado da expressão de nível de detalhe fixo for esperado ser constante e repetido dentro das linhas de um grupo, uma função como ANY_VALUE pode ser usada para retornar um único valor dos resultados agregados, como visto no exemplo acima.

Filtragem com base em expressões de nível de detalhe fixo

Como as expressões de nível de detalhe fixo são calculadas antes da aplicação de agrupamentos e filtros de visualização, se você deseja que elas sejam afetadas por filtros dinâmicos no seu painel, você deve definir esses filtros como parâmetros que afetam o texto dataset SQL subjacente. Consulte a seção Trabalhar com parâmetros do painel para obter mais detalhes sobre os parâmetros do painel.

Definindo expressões em um nível de detalhe mais amplo

Expressões em um nível de detalhe mais grosseiro compute um agregado em uma granularidade mais grosseira do que a granularidade da visualização, excluindo uma dimensão do conjunto de agrupamento da visualização. Essas expressões são medidas e são implementadas usando funções de janela agregadas com o especificador de intervalo ALL . Conceitualmente, agregar em uma janela que abrange toda a gama de uma dimensão é o mesmo que excluir essa dimensão completamente do agrupamento.

Sintaxe

SQL
<AGGREGATE_EXPRESSION> AGGREGATE OVER (ORDER BY <dimension> ALL)

Quando usar um nível de detalhe mais grosseiro

Utilize expressões com um nível de detalhe mais grosseiro quando precisar de:

  • Agrupamentos dinâmicos: Calcule percentagens ou agregados que se adaptam aos agrupamentos de visualização (por exemplo, percentagem do total para qualquer dimensão selecionada).
  • Agregações com reconhecimento de filtros: Calcule com uma granularidade mais grosseira, respeitando os filtros do painel.

Exemplo: Percentagem do total

O caso de uso mais comum para expressões com um nível de detalhe mais grosseiro é o cálculo de uma porcentagem do valor total. Para calcular a porcentagem do total de vendas por Region, mas dentro de uma partição dinâmica:

SQL
SUM(Sales) / (SUM(Sales) AGGREGATE OVER (ORDER BY Region ALL))

Esta expressão:

  1. calcular vendas totais dentro do particionamento da visualização; como Region e Product.
  2. calcular total de vendas dentro do particionamento da visualização, excluindo Region, em Product.
  3. Divide os dois para obter uma porcentagem que representa a porcentagem de cada venda que cada Region está contribuindo, para cada Product.

Exemplos

Frequência de venda do produto

Calcular o número de vendas para cada produto é simples, mas calcular a quantidade total de produtos dentro de faixas de vendas específicas requer uma abordagem diferente. Por exemplo, considere como você criaria um histograma que mostrasse a contagem de produtos agrupados por faixas de volume de vendas.

Cálculos personalizados:

  • Defina sale_count como uma expressão de nível de detalhe fixo: COUNT(*) OVER (PARTITION BY Product)

Uso: Crie um gráfico de barras agrupado por sale_count no eixo x e selecione COUNT(*) no eixo y.

Comparar com a média da coorte

Como os valores dos negócios se comparam ao valor médio dos negócios na mesma região?

Cálculos personalizados:

  • Defina average_deal_amount_by_region como uma expressão de nível de detalhe fixo: AVG(deal_amount) OVER (PARTITION BY Region)
  • Defina percentage_of_region_average como deal_amount - average_deal_amount_by_region

As duas expressões acima também podem ser combinadas em um único cálculo.

Utilização: Defina uma tabela e selecione percentage_of_region_average juntamente com qualquer outra dimensão necessária para a visualização.

Limitações

DISTINTO em funções de janela escalar

Você não pode usar DISTINCT diretamente em funções de janela escalares. Por exemplo, isto não funciona:

SQL
COUNT(DISTINCT customer_id) OVER (PARTITION BY region)

Em vez disso, use ARRAY_SIZE com COLLECT_SET:

SQL
ARRAY_SIZE(COLLECT_SET(customer_id) OVER (PARTITION BY region))

Agregação de funções de janela escalares

Não é possível agregar diretamente uma função de janela escalar (usada para níveis fixos de detalhe) ao criar uma expressão de medida.

Padrão 1: Defina a função de janela como um cálculo de dimensão separado e faça referência a ela na expressão da medida, como no exemplo de porcentagem do total acima.

Padrão 2: Alternativamente, para agregados decomponíveis como SUM, você pode usar agregação aninhada, que primeiro calcula o agregado interno (não janelado) em cada grupo e, em seguida, agrega os resultados de todo o grupo em uma segunda passagem:

SQL
SUM(quantity) / SUM(SUM(quantity)) OVER ()

Este padrão funciona para funções como SUM, MIN, MAX e COUNT, mas não para funções como MEDIAN ou PERCENTILE que não são decomponíveis. Observe atentamente a ordem das operações conforme definida pelos parênteses; uma expressão como SUM(SUM(quantity) OVER ()), embora semelhante, não será reconhecida como válida e deve ser expressa usando o primeiro padrão nesta seção.

Recursos adicionais