Dela via


Använd fönstermått i metriska vyer

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 exempel trailing 3 months. Detta inkluderar inte den aktuella enheten. Exkluderar till exempel trailing 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 exempel leading 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 inkluderar first och last.

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 till current å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 dimensionen date 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