Usar medidas de janela na visualização de métricas
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, comotrailing 3 months. Isso não inclui a unidade atual. Por exemplo,trailing 3 monthsexclui o mês atual.leading <value> <unit>: Inclui linhas da linha atual em diante pelo número especificado de unidades de tempo, comoleading 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 BYda consulta. Os valores possíveis incluemfirstelast.
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.
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.
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.
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.
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
datee outra para limitar a soma ao anocurrent. -
A soma cumulativa é restringida pela dimensão
yearpara 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.
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:
dategarante que a dimensãodateordene a janela. -
intervalo:
currentrestringe a janela a um único dia, sem agregação entre dias. -
semiaditivo:
lastgarante que o saldo mais recente seja retornado ao agregar em vários dias.
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:
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