Delen via


Venstermetingen gebruiken in metrische weergaven

Belangrijk

Deze functie is experimenteel.

Met venstermetingen kunt u metingen definiëren met gevensterde, cumulatieve of semi-aangrenzende aggregaties in uw metrische weergaven. Deze typen metingen bieden complexere berekeningen, zoals zwevende gemiddelden, wijzigingen in perioden en lopende totalen. Deze pagina bevat praktische voorbeelden die laten zien hoe u kunt werken met venstermetingen in metrische weergaven.

Een venstermeting definiëren

Venstermetingen maken het mogelijk om metingen te definiëren met gevensterde, cumulatieve of semi-additieve aggregaties. Een venstermeting bevat de volgende vereiste waarden:

  • orde: De dimensie die de volgorde binnen het venster bepaalt.

  • bereik: Definieert de omvang van het venster, zoals achterlopend, cumulatief of alle gegevens. Mogelijke bereikwaarden zijn onder andere:

    • current: Bevat rijen waarbij de volgordewaarde van het venster gelijk is aan de waarde van de huidige rij.
    • cumulative: Bevat alle rijen waarin de volgordewaarde van het venster kleiner is dan of gelijk is aan de waarde van de huidige rij.
    • trailing <value> <unit>: Bevat rijen uit de huidige rij die achteruitgaat met het opgegeven aantal tijdseenheden, zoals trailing 3 months. Dit omvat niet de huidige eenheid. Sluit bijvoorbeeld trailing 3 months de huidige maand uit.
    • leading <value> <unit>: Bevat rijen uit de huidige rij, vooruitgaand door het opgegeven aantal tijdseenheden, zoals leading 7 days.
    • all: Bevat alle rijen, ongeacht de vensterwaarde.
  • semiadditive: Hiermee geeft u op hoe de meting moet worden samengevat wanneer het orderveld niet is opgenomen in de query GROUP BY. Mogelijke waarden zijn onder andere first en last.

Voorbeeld van volg-, bewegende of voorloopvenstermeting

In het volgende voorbeeld wordt een meting berekend over een volg- of voorloopperiode in de afgelopen 7 dagen.

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

In dit voorbeeld is de volgende configuratie van toepassing:

volgorde:date geeft aan dat de datumdimensie het venster rangschikt.

bereik: De trailing 7 day specificatie definieert het venster als de 7 dagen vóór elke datum, met uitzondering van de datum zelf.

semiadditive:last geeft aan dat de laatste waarde in het venster van 7 dagen wordt gebruikt.

Voorbeeld van venstermaatregel voor periode-tot-periode

Bereken de wijziging van de vorige periode in de huidige periode.

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

In dit voorbeeld zijn de volgende voorwaarden van toepassing:

  • Er worden twee venstermetingen gebruikt: één voor het berekenen van de totale verkoop op de vorige dag en één voor de huidige dag.

  • Met een derde meting wordt de percentagewijziging (groei) tussen de huidige en vorige dagen berekend.

Voorbeeld van een cumulatieve (lopende) totaalmeting

Bereken een voorlopig totaal van een meting tot elk tijdstip.

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

In de volgende details worden belangrijke onderdelen van deze definitie gemarkeerd:

volgorde:date zorgt ervoor dat de date dimensie het venster rangschikt.

bereik:cumulative definieert het venster als alle gegevens tot en met elke datum.

semiadditive:last zorgt ervoor dat de laatste cumulatieve waarde wordt gebruikt bij het samenvoegen van dimensies.

Voorbeeld van meting voor periode tot heden

Bereken een voorlopig totaal in een bepaalde periode.

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

In de volgende details worden belangrijke onderdelen van deze definitie gemarkeerd:

  • Er worden twee venstermetingen gebruikt: een voor de cumulatieve som van de date dimensie en een andere om de som tot het current jaar te beperken.

  • De cumulatieve som wordt beperkt door de year dimensie om te controleren of deze alleen binnen het huidige jaar wordt berekend.

Voorbeeld van semi-additieve maatregel

Bereken een meting die niet mag worden opgeteld voor een specifieke dimensie, zoals een 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

In de volgende details worden belangrijke onderdelen van deze definitie gemarkeerd:

  • ordening:date zorgt ervoor dat de date dimensie het venster ordent.

  • bereik:current beperkt het venster tot één dag zonder aggregatie over dagen.

  • semiadditive:last zorgt ervoor dat het meest recente saldo wordt geretourneerd bij het samenvoegen van meerdere dagen.

Opmerking

Deze meting binnen het tijdsvenster somt nog steeds op voor alle klanten om het totale dagelijkse saldo te verkrijgen.

Een query uitvoeren op een venstermeting

U kunt een query uitvoeren op een metrische weergave met een venstermeting zoals elke andere metrische weergave. In het volgende voorbeeld wordt een metrische weergave opgevraagd:

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