Pular para o conteúdo principal

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.

  1. Inclua a função de janela na consulta source :

    SQL
    SELECT ..., <AGGREGATE_FUNCTION>(<column>) OVER (PARTITION BY <dim1>, <dim2>, ...) AS <lod_name>
    FROM <table>

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

  2. Exponha a coluna pré-computada como uma dimensão de identidade, onde name e expr são os nomes da coluna:

    YAML
    dimensions:
    - 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:

YAML
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.

nota

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 .

info

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:

YAML
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:

YAML
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_sales Agregações no nível de agrupamento da consulta.
  • all_priorities_sales usa range: all para compute um total geral em todas as prioridades de pedido, ignorando a dimensão order_priority na consulta.
  • pct_of_total_sales Divide as vendas de nível prioritário pelo total geral para produzir uma porcentagem.

Recursos adicionais