Pular para o conteúdo principal

Usar medidas de janela na visualização de métricas

info

Experimental

Esse recurso é experimental.

As medidas de janela permitem que o senhor defina medidas com agregações de janela, cumulativas ou semiaditivas em sua visualização métricas. Esses tipos de medidas permitem cálculos mais complexos, como médias móveis, mudanças de período a período e totais correntes. Esta página inclui exemplos práticos que demonstram como trabalhar com medidas de janelas na visualização métricas.

Definir uma medida de janela

As medidas de janela permitem definir medidas com agregações em janela, cumulativas ou semiaditivas. Uma medida de janela inclui os seguintes valores necessários:

  • ordem: a dimensão que determina a ordem da janela.

  • intervalo: define a extensão da janela, como dados finais, cumulativos ou todos os dados. Os valores de intervalo possíveis incluem o seguinte:

    • current: Inclui linhas em que o valor da ordem da janela é igual ao valor da linha atual.
    • cumulative : Inclui todas as linhas em que o valor da ordem da janela é menor ou igual ao valor da linha atual.
    • trailing <value> <unit>: Inclui linhas da linha atual retrocedendo pelo número especificado de unidades de tempo, como trailing 3 months. Isso não inclui a unidade atual. Por exemplo, trailing 3 months exclui o mês atual.
    • leading <value> <unit>: Inclui linhas da linha atual a partir do número especificado de unidades de tempo, como leading 7 days.
    • all: Inclui todas as linhas, independentemente do valor da janela.
  • semiaditivo: especifica como resumir a medida quando o campo do pedido não está incluído no GROUP BY da consulta. Os valores possíveis incluem first e last.

Exemplo de medida de janela traseira, móvel ou dianteira

O exemplo a seguir calcula uma medida em uma janela de tempo final ou inicial nos últimos 7 dias.

YAML
version: 0.1

source: samples.tpch.orders
filter: o_orderdate > DATE'1998-01-01'

dimensions:
- name: date
expr: o_orderdate

measures:
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: date
range: trailing 7 day
semiadditive: last

Neste exemplo, a configuração a seguir se aplica:

order: date especifica que a dimensão de data ordena a janela.

intervalo: A especificação trailing 7 day define a janela como os 7 dias antes de cada data, excluindo a data em si.

semiaditivo: last indica que o último valor na janela de 7 dias foi usado.

Exemplo de medida de janela período a período

Calcule a mudança do período anterior para o período atual.

YAML
version: 0.1

source: samples.tpch.orders
filter: o_orderdate > DATE'1998-01-01'

dimensions:
- name: date
expr: o_orderdate
measures:
- name: previous_day_sales
expr: SUM(o_totalprice)
window:
- order: date
range: trailing 1 day
semiadditive: last
- name: current_day_sales
expr: SUM(o_totalprice)
window:
- order: date
range: current
semiadditive: last
- name: day_over_day_growth
expr: (MEASURE(current_day_sales) - MEASURE(previous_day_sales)) / MEASURE(previous_day_sales) * 100

Neste exemplo, as seguintes condições se aplicam:

  • São usadas duas medidas de janela: uma para calcular o total de ventas no dia anterior e outra para o dia atual.

  • Uma terceira medida calcula a variação percentual (crescimento) entre o dia atual e o anterior.

Exemplo de medida total cumulativa (em execução)

Calcule o total contínuo de uma medida até cada ponto no tempo.

YAML
version: 0.1

source: samples.tpch.orders
filter: o_orderdate > DATE'1998-01-01'

dimensions:
- name: date
expr: o_orderdate
measures:
- name: running_total_sales
expr: SUM(o_totalprice)
window:
- order: date
range: cumulative
semiadditive: last

Os detalhes a seguir destacam key partes dessa definição:

order: date garante que a dimensão date ordene a janela.

intervalo: cumulative define a janela como todos os dados até e incluindo cada data.

semiaditivo: last garante que o último valor cumulativo seja usado ao agregar mais de dimensões.

Exemplo de medida do período até a data

Calcule um total em execução em um determinado período.

YAML
version: 0.1

source: samples.tpch.orders
filter: o_orderdate > DATE'1997-01-01'

dimensions:
- name: date
expr: o_orderdate
- name: year
expr: DATE_TRUNC('year', o_orderdate)
measures:
- name: ytd_sales
expr: SUM(o_totalprice)
window:
- order: date
range: cumulative
semiadditive: last
- order: year
range: current
semiadditive: last

Os detalhes a seguir destacam key partes dessa definição:

  • Duas medidas de janela são usadas: uma para a soma cumulativa na dimensão date e outra para limitar a soma ao ano current.

  • A soma cumulativa é restrita pela dimensão year para verificar se ela é calculada somente no ano atual.

Exemplo de medida semiaditiva

Calcule uma medida que não deve ser somada em uma dimensão específica, como um saldo bancário.

YAML
dimensions:
- name: date
expr: date
- name: customer
expr: customer_id

measures:
- name: semiadditive_balance
expr: SUM(balance)
window:
- order: date
range: current
semiadditive: last

Os detalhes a seguir destacam key partes dessa definição:

  • order: date garante que a dimensão date ordene a janela.

  • intervalo: current restringe a janela a um único dia sem agregação entre os dias.

  • semiaditivo: last garante que o saldo mais recente seja retornado ao agregar em vários dias.

nota

Essa medida de janela ainda soma todos os clientes para obter o saldo geral por dia.

Consultar uma medida de janela

O senhor pode consultar uma métrica view com uma medida de janela como qualquer outra métrica view. O exemplo a seguir consulta um site de métricas view:

SQL
SELECT
state,
DATE_TRUNC('month', date),
MEASURE(t7d_distinct_customers) as m
FROM sales_metric_view
WHERE date >= DATE'2024-06-01'
GROUP BY ALL