Freigeben über


Verwendung von Fensterabmessungen in metrischen Ansichten

Von Bedeutung

Dieses Feature ist experimentell.

Mit Windows-Measures können Sie in Ihren Metrik-Ansichten Kennzahlen mit windowed, kumulativen oder semiadditiven Aggregationen definieren. Diese Arten von Maßnahmen ermöglichen komplexere Berechnungen, wie gleitende Durchschnittswerte, Veränderungen von Zeitraum zu Zeitraum und laufende Summen. Diese Seite enthält praktische Beispiele, die zeigen, wie Sie mit Fenstermaßen in Metrikansichten arbeiten.

Definieren eines Fenstermaßs

Fensterfunktionen ermöglichen das Definieren von Kennzahlen mithilfe von Fenstern, kumulierten oder semi-additiven Aggregationen. Ein Fenstermaß enthält die folgenden erforderlichen Werte:

  • Ordnung: Die Dimension, die die Anordnung des Fensters bestimmt.

  • Bereich: Definiert das Ausmaß des Fensters, z. B. nachfolgende, kumulierte oder alle Daten. Mögliche Bereichswerte umfassen die Folgenden:

    • current: Enthält Zeilen, bei denen der Fensterreihenfolgewert dem Wert der aktuellen Zeile entspricht.
    • cumulative: Enthält alle Zeilen, bei denen der Fensterreihenfolgewert kleiner oder gleich dem Wert der aktuellen Zeile ist.
    • trailing <value> <unit>: Enthält Zeilen aus der aktuellen Zeile, die um die angegebene Anzahl von Zeiteinheiten rückwärts geht, z trailing 3 months. B. . Dies schließt nicht die aktuelle Einheit ein. Schließt beispielsweise trailing 3 months den aktuellen Monat aus.
    • leading <value> <unit>: Enthält Zeilen ab der aktuellen Zeile vorwärts mit der angegebenen Anzahl von Zeiteinheiten, z. B. leading 7 days.
    • all: Schließt alle Zeilen unabhängig vom Fensterwert ein.
  • Semiadditive: Legt fest, wie das Maß aggregiert wird, wenn das Ordnungsfeld nicht in die Abfrage GROUP BY einbezogen wird. Mögliche Werte sind first und last.

Beispiel für nachfolgendes, verschiebendes oder führendes Fenstermaß

Im folgenden Beispiel wird eine Metrik in einem zurückblickenden oder vorlaufenden Zeitfenster innerhalb der letzten 7 Tage berechnet.

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 diesem Beispiel gilt die folgende Konfiguration:

Reihenfolge:date Gibt an, dass die Datumsdimension die Reihenfolge des Fensters bestimmt.

Bereich: Die trailing 7 day Spezifikation definiert das Fenster als die sieben Tage vor jedem Datum, mit Ausnahme des Datums selbst.

Semiadditive:last zeigt an, dass der letzte Wert im 7-Tage-Zeitraum verwendet wird.

Beispiel für Perioden-zu-Perioden-Fenstermessung

Berechnen Sie die Änderung von der vorherigen Periode in den aktuellen Zeitraum.

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

Für dieses Beispiel gelten die folgenden Bedingungen:

  • Es werden zwei Zeitfenster verwendet: eines für die Berechnung des Gesamtumsatzes am Vortag und eines für den aktuellen Tag.

  • Ein drittes Maß berechnet die prozentuale Änderung (Wachstum) zwischen den aktuellen und vorherigen Tagen.

Beispiel für kumulatives (laufendes) Gesamtmaß

Berechnen Sie eine laufende Summe einer Kennzahl an jedem Zeitpunkt.

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

Die folgenden Details heben die wichtigsten Teile dieser Definition hervor:

Reihenfolge:date stellt sicher, dass die date Dimension die Reihenfolge der Fenster bestimmt.

Bereich:cumulative definiert das Fenster als alle Daten bis einschließlich jedes Datums.

Semiadditive:last stellt sicher, dass der letzte kumulierte Wert beim Aggregieren über Dimensionen verwendet wird.

Beispiel für Punkt-zu-Datum-Maß

Berechnet eine laufende Summe in einem bestimmten Zeitraum.

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

Die folgenden Details heben die wichtigsten Teile dieser Definition hervor:

  • Es werden zwei Fenstermaße verwendet: eine für die kumulierte Summe über die date Dimension und eine weitere, um die Summe auf das current Jahr zu begrenzen.

  • Die kumulierte Summe ist durch die year Dimension beschränkt, um zu überprüfen, ob sie nur innerhalb des aktuellen Jahres berechnet wird.

Beispiel einer semiadditiven Kennzahl

Berechnen Sie ein measure, das nicht über eine bestimmte Dimension summiert werden soll, z. B. einen Kontostand.

dimensions:
  - name: date
    expr: date
  - name: customer
    expr: customer_id

measures:
  - name: semiadditive_balance
    expr: SUM(balance)
    window:
      - order: date
        range: current
        semiadditive: last

Die folgenden Details heben die wichtigsten Teile dieser Definition hervor:

  • Reihenfolge:date stellt sicher, dass die date Dimension das Fenster anordnet.

  • Bereich:current Beschränkt das Fenster auf einen einzelnen Tag ohne Aggregation über Tage hinweg.

  • Semiadditive:last stellt sicher, dass der letzte Saldo beim Aggregieren über mehrere Tage zurückgegeben wird.

Hinweis

Dieses Fenster summiert weiterhin für alle Kunden, um den täglichen Gesamtsaldo zu erhalten.

Fenstergröße abfragen

Sie können eine Metrikansicht mit einem Fenstermaß genauso abfragen wie jede andere Metrikansicht. Im folgenden Beispiel wird eine Metrikansicht abgefragt.

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