Usar medidas de janela na visualização de métricas
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, comotrailing 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, comoleading 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 incluemfirst
elast
.
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.
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.
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.
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.
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 anocurrent
. -
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.
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ãodate
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.
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:
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