Pular para o conteúdo principal

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

info

Experimental

Este recurso é experimental.

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

Definir uma medida de janela

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

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

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

    • current: Inclui linhas onde 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 em diante pelo 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 de ordem não está incluído no GROUP BY da consulta. Os valores possíveis incluem first e last.

Exemplo de medida de janela à direita, em movimento ou à esquerda

O exemplo a seguir calcula uma medida em uma janela de tempo anterior ou posterior 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

Para este exemplo, a seguinte configuração se aplica:

ordem: 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 anteriores a cada data, excluindo a data em si.

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

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

Calcule a variação 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

Para este exemplo, as seguintes condições se aplicam:

  • Duas medidas de janela são usadas: 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 (corrente)

Calcular o total acumulado 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 partes key desta definição:

ordem: 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 dimensões.

Exemplo de medida do período até a data

Calcular um total acumulado 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 partes key desta 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 é restringida pela dimensão year para verificar se ela é calculada apenas dentro do 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 partes key desta definição:

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

  • intervalo: current restringe a janela a um único dia, sem agregação entre 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

Você pode consultar uma view de métricas com uma medida de janela como qualquer outra view de métricas. O exemplo a seguir consulta uma view de métricas:

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