Use expressões de nível de detalhe (LOD) na visualização de métricas.
As expressões de nível de detalhe (LOD) permitem especificar a granularidade na qual as agregações são calculadas, independentemente das dimensões em sua consulta. Esta página explica como usar expressões LOD na visualização de métricas.
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 usar ao calcular um agregado, independentemente das dimensões presentes na sua consulta. Isso lhe dá um controle preciso sobre o escopo de seus cálculos.
Existem dois tipos de expressões de nível de detalhe:
- Nível de detalhe fixo : Agrega dados com base em um conjunto predefinido de dimensões especificadas na própria expressão, ignorando outras dimensões na consulta.
- Nível de detalhe mais grosseiro : Agregue em uma granularidade mais grosseira do que a consulta, excluindo dimensões específicas do agrupamento.
Quando usar expressões de nível de detalhe
Utilize expressões de nível de detalhe quando precisar fazer o seguinte:
- 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 segmento que permaneçam constantes em diferentes agrupamentos.
Nível de detalhe fixo
Uma expressão de nível de detalhe fixo calcula um agregado em uma granularidade que você define, ignorando as dimensões em sua consulta. Na visão métricas, expressões LOD fixas são implementadas usando funções de janela SQL com cláusulas PARTITION BY na consulta source . O resultado do pré-cálculo é então exposto como uma dimensão de identidade.
Sintaxe
Expressões LOD fixas usam funções de janelaSQL para compute agregações em uma granularidade definida.
-
Inclua a função de janela na consulta
source:SQLSELECT ..., <AGGREGATE_FUNCTION>(<column>) OVER (PARTITION BY <dim1>, <dim2>, ...) AS <lod_name>
FROM <table>Para agregar em todo o dataset, omita a cláusula
PARTITION BYe deixe parênteses vazios apósOVER. -
Exponha a coluna pré-computada como uma dimensão de identidade, onde
nameeexprsão os nomes da coluna:YAMLdimensions:
- name: <lod_name>
expr: <lod_name>
Quando usar um nível de detalhe fixo
Utilize expressões com nível de detalhe fixo quando precisar do seguinte:
- Sem dependência de agrupamentos de consultas : métricas com particionamento estático em todos os usos.
- Agregados em nível de conjunto de dados : Agregados globais comparados com agrupamentos em nível de linha (por exemplo, percentual do total de vendas por prioridade).
- Hierarquias multiníveis : Métricas de nível detalhado e de nível agregado disponíveis na mesma view de métricas.
Exemplo: Total de vendas por prioridade de pedido
Suponha que você queira definir uma view de métricas onde as vendas de cada pedido possam ser comparadas com o total de vendas do seu grupo de prioridade. O exemplo a seguir calcula priority_total_price na consulta de origem e a expõe como uma dimensão de identidade:
version: 1.1
source: |
SELECT
o_orderkey,
o_orderpriority,
o_totalprice,
o_orderdate,
SUM(o_totalprice) OVER (PARTITION BY o_orderpriority) AS priority_total_price
FROM samples.tpch.orders
dimensions:
- name: order_priority
expr: o_orderpriority
- name: order_date
expr: o_orderdate
- name: priority_total_price
expr: priority_total_price
measures:
- name: total_sales
expr: SUM(o_totalprice)
- name: pct_of_priority_total
expr: SUM(o_totalprice) / ANY_VALUE(priority_total_price)
A dimensão de identidade priority_total_price contém o total fixo para cada grupo de prioridade. A medida pct_of_priority_total divide as vendas de pedidos individuais por esse total fixo para produzir uma porcentagem, independentemente de como a consulta agrupa os resultados.
Ao referenciar uma dimensão de nível de detalhe fixo em uma expressão de medida, envolva-a em uma função agregada. Use ANY_VALUE quando o valor for constante dentro de um grupo, como no exemplo anterior.
Filtragem com base em expressões de nível de detalhe fixo
Expressões de nível de detalhe fixo são calculadas dentro da consulta source antes que quaisquer filtros de tempo de consulta sejam aplicados. Para aplicar um filtro a um cálculo LOD fixo, inclua a condição de filtro na própria consulta source .
Nível de detalhe mais grosseiro
Um nível de detalhe mais grosseiro agrega os dados em uma granularidade menor do que a consulta, excluindo uma ou mais dimensões da partição. Na visão métricas, expressões LOD mais grosseiras são implementadas usando medidas de janela com a especificação de intervalo all .
Experimental
As medidas de janela são experimentais.
Sintaxe
Para cada dimensão a ser excluída da partição, defina uma medida de janela com range: all:
measures:
- name: <measure_name>
expr: <AGGREGATE_EXPRESSION>
window:
- order: <dimension_to_exclude>
range: all
semiadditive: last
Para excluir múltiplas dimensões, adicione uma entrada à matriz window para cada dimensão.
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 : Agregados que se adaptam aos agrupamentos da consulta (por exemplo, percentual do total para qualquer dimensão selecionada).
- Agregações com reconhecimento de filtros : calculam em uma granularidade mais grosseira, respeitando os filtros definidos no momento da consulta.
Exemplo: Percentagem do total de vendas
Para calcular a porcentagem do total de vendas para cada prioridade de pedido:
version: 1.1
source: samples.tpch.orders
dimensions:
- name: order_priority
expr: o_orderpriority
measures:
- name: total_sales
expr: SUM(o_totalprice)
- name: all_priorities_sales
expr: SUM(o_totalprice)
window:
- order: order_priority
range: all
semiadditive: last
- name: pct_of_total_sales
expr: SUM(o_totalprice) / MEASURE(all_priorities_sales)
Neste exemplo:
total_salesAgregações no nível de agrupamento da consulta.all_priorities_salesusarange: allpara compute um total geral em todas as prioridades de pedido, ignorando a dimensãoorder_priorityna consulta.pct_of_total_salesDivide as vendas de nível prioritário pelo total geral para produzir uma porcentagem.
Recursos adicionais
- Usar medidas de janela na visualização de métricas: O mecanismo subjacente para expressões de nível de detalhe mais grosseiras na visualização de métricas.
- Dados view de métricas do modelo: Visão geral dos componentes view de métricas e padrões de modelagem.
- Expressões de nível de detalhe (LOD): Expressões LOD em painéis de AI/BI .