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
<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:
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:
SUM(sales) OVER ()
Em seguida, podemos referenciar a expressão de nível de detalhe fixo em uma definição de medida calculada:
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.
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
<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:
SUM(Sales) / (SUM(Sales) AGGREGATE OVER (ORDER BY Region ALL))
Esta expressão:
- calcular vendas totais dentro do particionamento da visualização; como
RegioneProduct. - calcular total de vendas dentro do particionamento da visualização, excluindo
Region, emProduct. - Divide os dois para obter uma porcentagem que representa a porcentagem de cada venda que cada
Regionestá contribuindo, para cadaProduct.
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_countcomo 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_regioncomo uma expressão de nível de detalhe fixo:AVG(deal_amount) OVER (PARTITION BY Region) - Defina
percentage_of_region_averagecomodeal_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:
COUNT(DISTINCT customer_id) OVER (PARTITION BY region)
Em vez disso, use ARRAY_SIZE com COLLECT_SET:
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:
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
- O que são cálculos personalizados?: Crie cálculos reutilizáveis que possam referenciar outros cálculos.
- Defina cálculos em uma janela: A sintaxe subjacente que permite expressões de nível de detalhe.
- Referência de funções de cálculo personalizadas: Lista completa de funções de agregação e de janela disponíveis.