Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Den här funktionen är Experimentell.
Med fönstermått kan du definiera mått med fönster, kumulativa eller halvaddiiva aggregeringar i dina måttvyer. Dessa typer av mått möjliggör mer komplexa beräkningar, till exempel glidande medelvärden, period-över-period-ändringar och löpande summor. Den här sidan innehåller praktiska exempel som visar hur du arbetar med fönstermått i måttvyer.
Definiera ett fönstermått
Med mått med fönsterfunktioner kan du definiera mått med fönsterbaserade, kumulativa eller semi-additiva sammanfattningar. Ett fönstermått innehåller följande obligatoriska värden:
ordning: Dimensionen som avgör ordningen på fönstret.
omfång: Definierar omfattningen av fönstret, såsom eftersläpande, kumulativa eller alla data. Möjliga intervallvärden omfattar följande:
-
current
: Innehåller rader där fönsterordningsvärdet är lika med den aktuella radens värde. -
cumulative
: Innehåller alla rader där fönsterordningsvärdet är mindre än eller lika med den aktuella radens värde. -
trailing <value> <unit>
: Innehåller rader från den aktuella raden som går bakåt med det angivna antalet tidsenheter, till exempeltrailing 3 months
. Detta inkluderar inte den aktuella enheten. Exkluderar till exempeltrailing 3 months
den aktuella månaden. -
leading <value> <unit>
: Innehåller rader från den aktuella raden framöver med det angivna antalet tidsenheter, till exempelleading 7 days
. -
all
: Innehåller alla rader oavsett fönstervärdet.
-
Semiadditiv: Specificerar hur man sammanfattar måttet när orderfältet inte ingår i frågans
GROUP BY
. Möjliga värden inkluderarfirst
ochlast
.
Exempel på avslutande, flyttande eller inledande fönstermått
I följande exempel beräknas ett mått över ett avslutande eller inledande tidsfönster under de senaste 7 dagarna.
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
I det här exemplet gäller följande konfiguration:
ordning:date
specificerar att datumdimensionen ordnar fönstret.
intervall: Specifikationen trailing 7 day
definierar fönstret som de 7 dagar som föregår varje datum, exklusive själva datumet.
halvadditiv:last
anger att det sista värdet i 7-dagarsfönstret används.
Exempel på mätning av period-över-period-fönster
Beräkna ändringen från föregående period till den aktuella perioden.
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
I det här exemplet gäller följande villkor:
Två fönstermått används: ett för att beräkna den totala försäljningen föregående dag och ett för den aktuella dagen.
Ett tredje mått beräknar procentuell förändring (tillväxt) mellan aktuella och föregående dagar.
Exempel på kumulativt (löpande) totalt mått
Beräkna en löpande summa av ett mått upp till varje tidpunkt.
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
Följande information belyser viktiga delar av den här definitionen:
ordning:date
ser till att date
dimensionen ordnar fönstret.
intervall:cumulative
definierar fönstret som alla data fram till och med varje datum.
halvadditiv:last
ser till att det senaste kumulativa värdet används när du aggregerar över dimensioner.
Exempel på mått för hittills under perioden
Beräkna en löpande summa under en viss period.
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
Följande information belyser viktiga delar av den här definitionen:
Två fönstermått används: ett för den kumulativa summan över dimensionen
date
och ett annat för att begränsa summan tillcurrent
året.Den kumulativa summan begränsas av dimensionen
year
för att kontrollera att den endast beräknas inom det aktuella året.
Exempel på semiadditivt mått
Beräkna ett mått som inte ska summeras över en viss dimension, till exempel ett banksaldo.
dimensions:
- name: date
expr: date
- name: customer
expr: customer_id
measures:
- name: semiadditive_balance
expr: SUM(balance)
window:
- order: date
range: current
semiadditive: last
Följande information belyser viktiga delar av den här definitionen:
Ordning:
date
säkerställer att dimensionendate
ordnar fönstret.omfång:
current
begränsar fönstret till en enda dag utan aggregering över dagar.semiadditiv:
last
säkerställer att det senaste saldot returneras när du aggregerar över flera dagar.
Anmärkning
Det här fönstret mäter fortfarande summor över alla kunder för att få det totala saldot per dag.
Gör en sökning på ett fönstermått
Du kan köra frågor mot en måttvy med ett fönstermått precis som alla andra måttvyer. I följande exempel efterfrågas en måttvy:
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