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.
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.
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.
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>
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.
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.
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.
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
- Medidas de janela: O mecanismo subjacente para expressões de nível de detalhe mais grosseiras na visualização de métricas.
- Visualização de métricasUnity Catalog: 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 .