Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Erweiterte Techniken für Metrikansichten ermöglichen anspruchsvolle Berechnungen wie gleitende Mittelwerte, Period-over-Period-Änderungen, laufende Summen und komplexe abgeleitete KPIs, wobei Konsistenz und Wiederverwendbarkeit auf der semantischen Ebene beibehalten werden. Auf dieser Seite wird erläutert, wie Sie Fenstermaße für Zeitreihenanalyse und Erstellung komplexer Metriken aus einfacheren Measures verwenden.
Diese Seite setzt voraus, dass Sie mit grundlegenden Konzepten der Metrikansichtsmodellierung vertraut sind. Siehe Modellmetrikansichten.
Hinweis
Die Beispiele auf dieser Seite verwenden das TPC-H Beispiel-Dataset, das eine Großhandels-Lieferkette modelliert. Weitere Informationen zum TPC-H-Datasets finden Sie unter tpch. Ein ende-to-End-Lernprogramm, das dieses Dataset mit Metrikansichten verwendet, finden Sie unter Lernprogramm: Erstellen einer vollständigen Metrikansicht mit Verknüpfungen.
Fenstermaße
Von Bedeutung
Dieses Feature ist experimentell.
Mithilfe von Fenstermaßen können Sie Measures mit Fenstern, kumulierten oder semi-additiven Aggregationen in Ihren Metrikansichten definieren und Berechnungen wie gleitende Mittelwerte, Periodenüberlaufänderungen und laufende Summen unterstützen. Dieser Abschnitt enthält praktische Beispiele.
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:
order: Die Dimension, die die Reihenfolge des Fensters bestimmt.
bereich: Definiert den Umfang des Fensters, z. B. nachgestellte, 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, ztrailing 3 months. B. . Dies schließt nicht die aktuelle Einheit ein. Schließt beispielsweisetrailing 3 monthsden aktuellen Monat aus. -
leading <value> <unit>: Enthält Zeilen ab der aktuellen Zeile, die um die angegebene Anzahl von Zeiteinheiten, z. B.leading 7 days, vorwärts gehen. Dies schließt nicht die aktuelle Einheit ein. -
all: Schließt alle Zeilen unabhängig vom Fensterwert ein.
-
semiadditive: Gibt an, wie das Measure aggregiert wird, wenn das Bestellfeld nicht in die Abfrage
GROUP BYeinbezogen wird. Mögliche Werte sindfirstundlast.
Beispiel für nachfolgendes, verschiebendes oder führendes Fenstermaß
Im folgenden Beispiel wird eine fortlaufende 7-tägige Anzahl eindeutiger Kunden berechnet, die Bestellungen getätigt haben. Diese Metrik hilft, Kundenengagement-Trends im Laufe der Zeit nachzuverfolgen, indem sie zeigt, wie viele unterschiedliche Kunden in der Woche vor jedem Datum Einkäufe getätigt haben.
version: 1.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:
-
order:
dateGibt an, dass die Datumsdimension das Fenster anordnet. -
Bereich: Das Fenster wird von der
trailing 7 daySpezifikation als die sieben Tage vor jedem Datum definiert, wobei das Datum selbst ausgeschlossen ist. -
semiadditive:
lastGibt den letzten Wert im 7-Tage-Fenster an, wenn das Datum keine Gruppierungsspalte ist.
Beispiel für Perioden-zu-Perioden-Fenstermessung
Im folgenden Beispiel wird das tägliche Umsatzwachstum berechnet, indem der Umsatz von heute (Summe aller Bestellpreise) mit dem Umsatz von gestern verglichen wird. Diese Metrik hilft bei der Identifizierung der täglichen Verkaufstrends und zeigt die prozentuale Umsatzänderung an, die für die Überwachung der Geschäftsleistung und das Erkennen von Anomalien nützlich ist.
version: 1.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ß
Im folgenden Beispiel werden die kumulierten Umsatzerlöse vom Anfang des Datasets bis zu jedem Datum berechnet. Diese laufende Summe zeigt, wie viel Gesamtumsatz im Laufe der Zeit generiert wurde, nützlich für die Verfolgung des Fortschritts in Richtung jährlicher Umsatzziele oder die Analyse langfristiger Wachstumsmuster.
version: 1.1
source: samples.tpch.orders
filter: o_orderdate > DATE'1998-01-01'
dimensions:
- name: date
expr: o_orderdate
- name: customer
expr: o_custkey
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:
order: Gibt die Dimension an, die die Sortierung von Datensätzen innerhalb des Fensters definiert. In diesem Beispiel
datewird das Fenster chronologisch sortiert.bereich:
cumulativeDefiniert das Fenster als alle Daten vom Anfang des Datasets bis einschließlich jedes Datums.semiadditive:
lastSteuert, wie das Maß aggregiert wird, wenndatenicht in der Abfrage enthalten ist. Wenn die Datumsdimension nicht in die AbfrageGROUP BYeinbezogen wird, gibt das Measure den letzten (aktuellsten) kumulativen Wert zurück, anstatt alle Datumsangaben zu addieren.
Beispiel für Punkt-zu-Datum-Maß
Im folgenden Beispiel wird der Umsatzumsatz (Year-to-Date, YTD) berechnet. Diese Maßnahme zeigt den kumulierten Umsatz, der vom 1. Januar jedes Jahres bis zum aktuellen Datum generiert wurde und zu Beginn jedes neuen Jahres zurückgesetzt wird. Diese Metrik ist unerlässlich, um die Performance des aktuellen Jahres mit den Vorjahren zu vergleichen und den Fortschritt in Richtung der jährlichen Ziele zu verfolgen.
version: 1.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
dateDimension und eine weitere, um die Summe auf dascurrentJahr zu begrenzen.Die
yearDimension beschränkt die kumulierte Summe, um sie nur innerhalb des aktuellen Jahres zu berechnen.
Beispiel einer semiadditiven Kennzahl
Im folgenden Beispiel werden Kontosaldos berechnet, die nicht über Datumsangaben addiert werden sollten (Sie können den Saldo von Montag nicht zum Guthaben am Dienstag hinzufügen, um den Gesamtsaldo zu erhalten). Stattdessen gibt die Maßnahme beim Aggregieren über mehrere Tage hinweg den letzten Saldo zurück. Die Maßnahme kann jedoch weiterhin über Kunden hinweg addiert werden, um das Gesamtguthaben für alle Konten an einem bestimmten Tag anzuzeigen.
version: 1.1
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:
order: Gibt die Dimension an, die die Sortierung von Datensätzen innerhalb des Fensters definiert. In diesem Beispiel
datewird das Fenster chronologisch sortiert.Bereich:
currentBeschränkt das Fenster auf einen einzelnen Tag ohne Aggregation über Tage hinweg.Semiadditive:
lastGibt den letzten Saldo zurück, wenn er über mehrere Tage aggregiert wird.
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_customers) as m
FROM my_metric_view
WHERE date >= DATE'2024-06-01'
GROUP BY ALL
Kombinierbarkeit
Metrikansichten sind kombinierbar. Sie können neue Dimensionen und Kennzahlen erstellen, die auf vorhandene Dimensionen verweisen, anstatt die Logik von Grund auf neu zu schreiben. Dadurch wird die Duplizierung reduziert und die Verwaltung komplexer Metrikdefinitionen vereinfacht.
Die Komponierbarkeit funktioniert auf zwei Ebenen: innerhalb einer einzelnen Metrikansicht und über mehrere Metrikansichten hinweg. Eine Metrikansicht kann eine andere Metrikansicht als Quelle verwenden, sodass Sie Layerdefinitionen erstellen und schrittweise umfangreichere semantische Modelle erstellen können, ohne Logik zu duplizieren.
Die Komponierbarkeit unterstützt die folgenden Referenzmuster:
- Frühere Dimensionen in neuen Dimensionen.
- Dimensionen und frühere Messgrößen in neuen Messgrößen.
- Dimensionen aus Metrikansichten, die als Quelle in neuen Dimensionen verwendet werden.
- Dimensionen und Messungen aus metrischen Ansichten, die als Quelle in neuen Messungen verwendet werden.
Maßnahmen mit Komponierbarkeit definieren
Im measures-Abschnitt können Sie auf Maßnahmen aus der Quellmetrikansicht oder auf Maßnahmen verweisen, die zuvor in derselben Metrikansicht definiert wurden. Dieser Ansatz verbessert Konsistenz, Auditierbarkeit und Wartung Ihrer semantischen Ebene.
| Typ der steuerlichen Maßnahme | Beschreibung | Beispiel |
|---|---|---|
| Atomic | Eine einfache, direkte Aggregation in einer Quellspalte. Diese bilden die Bausteine. | SUM(o_totalprice) |
| Zusammengesetzt | Ein Ausdruck, der eine oder mehrere andere Kennzahlen mithilfe der MEASURE()-Funktion mathematisch kombiniert. |
MEASURE(total_revenue) / MEASURE(order_count) |
Beispiel: Durchschnittlicher Bestellwert (AOV)
Im folgenden Beispiel wird der durchschnittliche Bestellwert (Average Order Value, AOV) mithilfe von zwei Atommaßen definiert: total_revenue (Summe der Auftragspreise) und order_count (Anzahl der Bestellungen). Die avg_order_value Messung bezieht sich auf beide atomaren Messungen.
version: 1.1
source: samples.tpch.orders
measures:
# Total Revenue
- name: total_revenue
expr: SUM(o_totalprice)
# Order Count
- name: order_count
expr: COUNT(1)
# Composed Measure: Average Order Value (AOV)
- name: avg_order_value
# Defines AOV as Total Revenue divided by Order Count
expr: MEASURE(total_revenue) / MEASURE(order_count)
Wenn sich die total_revenue Definition ändert (z. B. um Steuern auszuschließen), avg_order_value wird automatisch die aktualisierte Definition verwendet.
Kompositierbarkeit mit bedingter Logik
Sie können die Komponierbarkeit verwenden, um komplexe Verhältnisse, bedingte Prozentsätze und Wachstumsraten zu erstellen, ohne sich auf Fensterfunktionen für einfache Periodenberechnungen zu verlassen.
Beispiel: Erfüllungsrate
Im folgenden Beispiel wird die Erfüllungsrate berechnet: der Prozentsatz der Bestellungen mit dem Status 'F' (erfüllt). Die Maßnahme teilt die erfüllten Bestellungen durch die Gesamtaufträge.
version: 1.1
source: samples.tpch.orders
measures:
# Total Orders (denominator)
- name: total_orders
expr: COUNT(1)
# Fulfilled Orders (numerator)
- name: fulfilled_orders
expr: COUNT(1) FILTER (WHERE o_orderstatus = 'F')
# Composed Measure: Fulfillment Rate (Ratio)
- name: fulfillment_rate
expr: MEASURE(fulfilled_orders) / MEASURE(total_orders)
format:
type: percentage
Bewährte Methoden für die Komponierbarkeit
-
Definieren Sie zuerst atomare Maßeinheiten: Legen Sie grundlegende Maßeinheiten (
SUM,COUNT,AVG) fest, bevor Sie Maßnahmen definieren, die auf diese Bezug nehmen. - Verwenden Sie für Verweise
MEASURE(): Verwenden Sie dieMEASURE()-Funktion zum Verweisen auf ein anderes Maß innerhalb einesexpr. Wiederholen Sie die Aggregationslogik nicht manuell. Beispielsweise vermeiden SieSUM(a) / COUNT(b), wenn Maßnahmen für beide Werte bereits vorhanden sind. -
Lesbarkeit priorisieren: Verfassen von Maßnahmen mit klaren mathematischen Formeln. Ist beispielsweise
MEASURE(gross_profit) / MEASURE(total_revenue)klarer als ein einzelner komplexer SQL-Ausdruck. - Fügen Sie semantische Metadaten hinzu: Verwenden Sie semantische Metadaten, um zusammengesetzte Measures (z. B. Prozentsätze oder Währungen) für nachgeschaltete Tools zu formatieren. Siehe Agentmetadaten in Metrikansichten.