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.
In diesem Lernprogramm erstellen Sie eine Metrikansicht der Vertriebsanalyse für das TPC-H-Dataset. Am Ende haben Sie eine Metrikansicht, die:
- Verknüpft Bestellungen und Kunden über mehrere Tabellen hinweg mithilfe eines Schneeflockenschemas.
- Definiert Felder (auch als Dimensionen bezeichnet) für Zeit-, Geografie- und Reihenfolgeattribute.
- Berechnet einfache und komplexe Kennzahlen, darunter Verhältniszahlen, gefilterte Aggregationen und Fensterkennzahlen.
- Verwendet die Kompositierbarkeit, um komplexe Metriken aus einfacheren Measures zu erstellen.
- Definiert einen Parameter, um einen Rabattsatz zur Abfragezeit anzuwenden.
- Enthält Agentmetadaten für Dashboards und KI-Tools.
Wenn Sie mit metrischen Ansichten noch nicht vertraut sind, beginnen Sie mit " Erstellen einer Metrikansicht" , um die Grundlagen zu erlernen. Dieses Tutorial erweitert diese Grundlage mit praktischer Komplexität.
Anforderungen
Für dieses Tutorial benötigen Sie Folgendes:
- Ein Arbeitsbereich, der für den Unity-Katalog aktiviert ist.
- Ein SQL Warehouse oder eine Computeressource mit Databricks Runtime 17.3 oder höher.
Die vollständige Liste der Berechtigungen, die zum Erstellen einer Metrikansicht erforderlich sind, finden Sie unter "Voraussetzungen".
Note
Das Erstellen einer Metrikansicht wird für Databricks Runtime 16.4 und höher unterstützt. In diesem Lernprogramm werden Features verwendet, die Databricks Runtime 17.3 oder höher erfordern, und einige Schritte erfordern eine spätere Laufzeit. Die Mindestlaufzeit für jedes Feature finden Sie unter Verfügbarkeit der Metrikansichtsfeatures.
Das Datenmodell
Das TPC-H-Dataset modelliert eine Großhandels-Lieferkette. In diesem Lernprogramm werden drei Tabellen verwendet, die in einem Schneeflockenschema verknüpft sind:
-
ordersverbindet sich mitcustomerano_custkey = c_custkey -
customerverbindet sich mitnationanc_nationkey = n_nationkey
| Tabelle | Rolle | Schlüsselspalten |
|---|---|---|
orders |
Faktentabelle (Bestelltransaktionen) |
o_orderkey, o_custkey, o_totalprice, o_orderdate, , o_orderstatus |
customer |
Dimensionstabelle (Kundendetails) |
c_custkey, c_name, c_mktsegment, c_nationkey |
nation |
Dimensionstabelle (Referenz für Länder oder Regionen) |
n_nationkey, n_namen_regionkey |
Schritt 1: Erstellen der Metrikansicht und Öffnen des Editors
Sie können diese Metrikansicht in der Benutzeroberfläche des Katalog-Explorers erstellen, mit Genie Code generieren oder die vollständige YAML-Definition direkt schreiben. Alle drei Methoden werden in eine einzelne YAML-Definition aufgelöst, die die Metrikansicht modelliert. Wählen Sie in jedem folgenden Schritt die Registerkarte "Katalog-Explorer-Benutzeroberfläche " oder "YAML-Editor " aus, um Ihrer bevorzugten Methode zu folgen. Wenn Sie den YAML-Editor verwenden, ist der Beispielcode in jedem Schritt der Teil der YAML-Definition, der dem entspricht, was Sie in diesem Schritt erstellen.
Note
Die YAML-Beispiele in diesem Lernprogramm verwenden das fields Schlüsselwort. Wenn Sie eine Metrikansicht im Low-Code-Editor erstellen, verwendet das generierte YAML stattdessen das entsprechende dimensions Schlüsselwort. Siehe Felder.
Wenn Sie mit der Benutzeroberfläche zum Erstellen von Metrikansichten noch nicht vertraut sind, lesen Sie "Erstellen einer Metrikansicht".
So erstellen Sie die Metrikansicht im Katalog-Explorer:
- Suchen Sie nach
samples.tpch.orders. - Klicken Sie auf den Tabellennamen.
- Klicken Sie auf "Metrische Ansicht>", und benennen Sie die Ansicht.
Die detaillierten Erstellungsschritte finden Sie unter Erstellen einer Metrikansicht. Wenn der Editor geöffnet wird, nutzen Sie die Registerkarte UI, zum interaktiven Erstellen, oder klicken Sie auf die Schaltfläche <>, um die YAML-Definition direkt zu bearbeiten.
Schritt 2: Einrichten der Metrikansicht
Legen Sie eine Version und eine Beschreibung für die Metrikansicht fest. Das version bestimmt die YAML-Spezifikationsversion, und das comment dokumentiert den Zweck der Metrikansicht, der im Catalog Explorer angezeigt wird. Azure Databricks verwaltet die Version für Sie.
Benutzeroberfläche des Katalog-Explorers
Die Version ist für Sie definiert. So fügen Sie die Beschreibung nach dem Speichern der Metrikansicht hinzu oder bearbeiten sie:
- Suchen Sie im Catalog Explorer nach der Metrikansicht und klicken Sie auf ihren Namen.
- Klicken Sie auf "Beschreibung", und geben Sie dann eine Beschreibung der Metrikansicht ein. Sie können die Beispielbeschreibung verwenden, die auf der Registerkarte YAML-Editor angezeigt wird.
Dieser Text entspricht dem comment Feld in der YAML-Definition. Weitere Möglichkeiten zum Bearbeiten einer Metrikansicht finden Sie unter Bearbeiten einer Metrikansicht.
YAML-Editor
version: 1.1
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
Schritt 3: Definieren der Quelle und Verknüpfungen
Definieren Sie die primäre Quelltabelle, und verknüpfen Sie verwandte Tabellen:
-
sourcesetzt die Faktentabelle (Bestellungen) als Granularität fest. -
joinsbringt Kundendaten mithilfe einer viele-zu-eins-Beziehung ein. - Die verschachtelte
nation-Verknüpfung veranschaulicht ein Schneeflockenschema, bei dem übercustomerverknüpft wird, um auf geografische Daten zuzugreifen, wobei die Nation eine Unterdimension des Kunden ist.
Benutzeroberfläche des Katalog-Explorers
Dieses Beispiel fügt zwei Joins hinzu, beide Many-to-one, um das Snowflake-Schema zu modellieren.
So fügen Sie die customer Verknüpfung hinzu:
- Klicken Sie im Editor auf "Beitreten" in der oberen rechten Ecke, um das Dialogfeld " Verknüpfung hinzufügen " zu öffnen.
- Suchen Sie nach
samples.tpch.customer, klicken Sie auf den Tabellennamen und dann auf Hinzufügen. - Legen Sie die Verknüpfungsbedingung auf
o_custkey = c_custkey. - Wählen Sie unter VerknüpfungskardinalitätViele-zu-eins aus. Anleitung zur Auswahl einer Kardinalität finden Sie unter Verbundkardinalität.
Fügen Sie dann die geschachtelte nation Verknüpfung hinzu. Wiederholen Sie die Schritte aus dem customer Join und verknüpfen Sie samples.tpch.nation über c_nationkey = n_nationkey. Das Verschachteln des Joins unter customer modelliert Nation als Unterdimension des Kunden.
Die vollständigen Verknüpfungsdialogschritte finden Sie unter Schritt 2: Hinzufügen einer Verknüpfung.
YAML-Editor
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
Schritt 4: Definieren eines Filters
Ein filter schränkt die Quelldaten ein und gilt für alle Abfragen auf die Metrikansicht. Dieses Tutorial begrenzt die Metrikansicht auf aktuelle Daten.
Benutzeroberfläche des Katalog-Explorers
So definieren Sie den Filter:
- Klicken Sie im Editor auf
Filter in der oberen rechten Ecke.
- Verwenden Sie die Drop-down-Menüs, um die Spalte auf
o_orderdate, den Operator auf>=und den Wert auf1995-01-01festzulegen.
Weitere Informationen zu Filtern finden Sie in Schritt 3: Definieren eines Filters.
YAML-Editor
filter: o_orderdate >= '1995-01-01'
Schritt 5: Definieren von Feldern
Felder sind die Attribute, nach denen Benutzer gruppiert und gefiltert werden. Ein Feld kann eine kategorisierte Spalte (z. B. Region oder Status) oder eine nicht aggregierte numerische Spalte (z. B. Alter oder Menge) sein, die Benutzer zur Abfragezeit aggregieren.
Agent-Metadaten
Jedes Feld und jede Kennzahl in diesem Tutorial enthält Eigenschaften für Agent-Metadaten, die verbessern, wie Ihre Metrikansicht mit Dashboards und KI-Tools funktioniert:
-
display_name: Eine lesbare Bezeichnung, die in Visualisierungen anstelle des technischen Spaltennamens angezeigt wird. -
synonyms: Alternative Bezeichnungen, die KI-Tools wie Genie dabei helfen, Felder und Kennzahlen mithilfe natürlicher Sprachabfragen zu finden. -
format: Darstellung von Werten in nachgelagerten Oberflächen wie Dashboards, Notizbüchern und SQL-Abfrageergebnissen, z. B. Währung, Zahl oder Prozentsatz.
Diese Eigenschaften sind optional, aber empfohlen. Die folgenden Schritte enthalten die Definitionen für Felder und Kennzahlen direkt.
Felddefinitionen
Dieses Lernprogramm fügt Folgendes hinzu:
-
Zeitfelder:
order_date,order_monthundorder_yearbei mehreren Granularitäten zur Unterstützung verschiedener Analyseanforderungen. -
Transformierte Felder:
order_statusundorder_priority, dieCASEundSPLITverwenden, um Quellcodes in lesbare Bezeichnungen zu konvertieren. -
Verknüpfte Felder:
customer_name,market_segmentundcustomer_nation, die verknüpfte Tabellen mit dem Verknüpfungsnamen referenzieren. Geschachtelte Verknüpfungsspalten verwenden eine verkettete Punktnotation, wie etwacustomer.nation.n_name, um das Schneeflockenschema zu durchlaufen.
Benutzeroberfläche des Katalog-Explorers
Der Editor fügt automatisch alle Quellspalten zum Felder-Tab hinzu. Bearbeiten, Umbenennen, Entfernen und Hinzufügen von Feldern, sodass die Metrikansicht genau folgendes definiert. Klicken Sie für jedes Feld auf den Namen, um es zu bearbeiten, oder klicken Sie auf
hinzufügen ", um es zu erstellen, und legen Sie dann den Ausdruck im Generator- oder benutzerdefinierten Modus fest. Legen Sie den Anzeigenamen und die Synonyme für jedes Feld wie dargestellt fest.
order_date: Wählen Sie im Generatormodus die
o_orderdateSpalte aus. Festlegen des Anzeigenamens aufOrder Date.order_month: Geben Sie im benutzerdefinierten Modus
DATE_TRUNC('MONTH', order_date)ein. Festlegen des Anzeigenamens aufOrder Month.order_year: Geben Sie im Modus Benutzerdefiniert
YEAR(order_date)ein. Festlegen des Anzeigenamens aufOrder Year.order_status: Geben Sie im benutzerdefinierten Modus den folgenden Ausdruck ein. Legen Sie den Anzeigenamen auf
Order Statusund Synonyme aufstatus,fulfillment status.CASE o_orderstatus WHEN 'O' THEN 'Open' WHEN 'P' THEN 'Processing' WHEN 'F' THEN 'Fulfilled' ENDorder_priority: Geben Sie im
SPLIT(o_orderpriority, '-')[0]Modus ein. Festlegen des Anzeigenamens aufPriority.customer_name: Wählen Sie im Generatormodus die
c_nameSpalte aus der verknüpftencustomerTabelle aus. Festlegen des Anzeigenamens aufCustomer Name.market_segment: Wählen Sie im Generatormodus die
c_mktsegmentSpalte aus der verknüpftencustomerTabelle aus. Legen Sie den Anzeigenamen aufMarket Segmentund Synonyme aufsegment,industry.customer_nation: Geben Sie im
customer.nation.n_nameModus ein, um auf die geschachteltenationVerknüpfung zu verweisen. Legen Sie den Anzeigenamen aufCountryund Synonyme aufnation,country.
Die vollständigen Feldschritte finden Sie unter Schritt 4: Hinzufügen von Feldern.
YAML-Editor
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
Schritt 6: Definieren von Parametern
Mithilfe von Parametern können Sie Werte beim Abfragen in die Metrikansicht übergeben, sodass eine einzelne Definition viele Abfragevarianten erfüllen kann. Dieses Tutorial fügt einen discount-Parameter hinzu, den eine spätere Kennzahl zur Berechnung des diskontierten Umsatzes verwendet. Der Parameter hat standardmäßig den Wert 0, sodass Abfragen, die keinen Wert übergeben, nicht rabattierte Einnahmen zurückgeben. Weitere Informationen zu Parametern finden Sie unter Verwenden von Parametern mit Metrikansichten.
Benutzeroberfläche des Katalog-Explorers
Klicken Sie in der Editorüberschrift auf "Parameter hinzufügen". Geben Sie discount als Namen ein, geben Sie dann den Standardwert 0 ein und wählen Sie den double-Datentyp aus.
YAML-Editor
parameters:
- name: discount
data_type: double
default: 0
Schritt 7: Kennzahlen definieren
Measures sind die Berechnungen, die Benutzer analysieren möchten. Definieren Sie zunächst atomische Measures, und verwenden Sie dann die Komponierbarkeit, um komplexe Metriken zu erstellen, die auf zuvor definierte Measures mit der MEASURE() Funktion verweisen. Legen Sie das display_name, formatund synonyms für jedes Measure fest, wie in Agent-Metadaten beschrieben. Dieses Lernprogramm fügt Folgendes hinzu:
-
Atommaße:
order_count,total_revenueundunique_customers, die einfachen Aggregationen, die die Bausteine bilden. -
Zusammengesetzte Kennzahlen:
avg_order_valueundrevenue_per_customer, die mitMEASURE()auf zuvor definierte Kennzahlen verweisen, anstatt die Aggregationslogik zu duplizieren. Wenntotal_revenueÄnderungen vorgenommen werden, verwenden diese Measures automatisch die aktualisierte Definition. Siehe Kompositierbarkeit. -
Gefilterte Kennzahlen:
open_order_revenueundfulfilled_order_revenue, dieFILTER (WHERE ...)verwenden, um bedingte Kennzahlen ohne separate Felder zu erstellen. -
Parametrisierte Kennzahl:
discounted_revenue, die auf den Parameterdiscountverweist, um einen Rabattsatz anzuwenden. Siehe Verwenden von Parametern mit Metrikansichten. -
Fenstermetrik:
t7d_customers, die eine rollierende 7-Tage-Anzahl eindeutiger Kunden berechnet. Weitere Fenstermaßmuster finden Sie unter "Fenstermaße ".
Benutzeroberfläche des Katalog-Explorers
Der Editor fügt automatisch ein Beispielmaß COUNT(*) hinzu. Bearbeiten oder entfernen Sie sie, und fügen Sie Kennzahlen hinzu, damit die Metrikansicht genau Folgendes definiert. Klicken Sie für jede Kennzahl auf
Hinzufügen und legen Sie dann den Ausdruck im Builder- oder benutzerdefinierten Modus fest. Legen Sie den Anzeigenamen, das Format und die Synonyme wie dargestellt fest. Verwenden Sie 2 Dezimalstellen für Währungsformate und 0 Dezimalstellen für Zahlenformate.
-
order_count: Wählen Sie im Builder-Modus die Aggregation Anzahl unterschiedlicher Werte auf
o_orderkeyaus. Legen Sie den Anzeigenamen aufOrder Countund das Format auf Zahl fest. -
total_revenue: Im Builder-Modus wählen Sie die Aggregation „Summe“ auf
o_totalprice. Legen Sie den Anzeigenamen aufTotal Revenue, das Format auf Währung (USD) und die Synonyme aufrevenue,salesfest. -
discounted_revenue: Im Benutzerdefiniert-Modus geben Sie
SUM(o_totalprice * (1 - discount))ein. Legen Sie den Anzeigenamen aufDiscounted Revenue,Format auf Währung (USD)' fest. -
unique_customers: Wählen Sie im Builder-Modus die Aggregation Anzahl unterschiedlicher Werte für
o_custkeyaus. Legen Sie den Anzeigenamen aufUnique Customersund das Format auf Zahl fest. -
avg_order_value: Geben Sie im Benutzerdefinierten Modus
MEASURE(total_revenue) / MEASURE(order_count)ein. Legen Sie den Anzeigenamen aufAvg Order Value,Format auf Währung (USD), Synonyme aufAOV. -
revenue_per_customer: Geben Sie im
MEASURE(total_revenue) / MEASURE(unique_customers)Modus ein. Legen Sie den Anzeigenamen aufRevenue per Customer,Format auf Währung (USD)' fest. -
open_order_revenue: Geben Sie im benutzerdefinierten Modus
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')ein. Legen Sie den Anzeigenamen aufOpen Order Revenue,Format auf Währung (USD), Synonyme aufbacklog. -
fulfilled_order_revenue: Geben Sie im Modus Benutzerdefiniert
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')ein. Legen Sie den Anzeigenamen aufFulfilled Revenue,Format auf Währung (USD)' fest. -
t7d_customers: Geben Sie im
COUNT(DISTINCT o_custkey)Modus ein. Klicken Sie dann auf + Fenster und konfigurieren Sie ein Fenster, das nachorder_dategeordnet ist, mit dem Bereichtrailing 7 dayund der semiadditiven Aggregationlast. Legen Sie den Anzeigenamen auf7-Day Rolling Customersund das Format auf Zahl fest.
Die vollständigen Schritte zum Erstellen von Measures finden Sie unter Schritt 5: Measures hinzufügen.
YAML-Editor
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
Überprüfen der vollständigen Definition
Nach Abschluss der vorstehenden Schritte weist Ihre Metrikansicht die folgende vollständige Definition auf:
Anzeigen der vollständigen YAML-Definition
version: 1.1
parameters:
- name: discount
data_type: double
default: 0
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
filter: o_orderdate >= '1995-01-01'
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
Erstellen der Metrikansicht mit SQL
Wenn Sie diese Definition außerhalb des Katalog-Explorers erstellen, führen Sie die folgende SQL-Datei aus, um die Metrikansicht zu erstellen:
CREATE OR REPLACE VIEW catalog.schema.tpch_sales_analytics
WITH METRICS
LANGUAGE YAML
AS $$
version: 1.1
parameters:
- name: discount
data_type: double
default: 0
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
filter: o_orderdate >= '1995-01-01'
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
fields:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', order_date)"
display_name: Order Month
- name: order_year
expr: YEAR(order_date)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: discounted_revenue
expr: SUM(o_totalprice * (1 - discount))
display_name: Discounted Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
$$;
Weitere Möglichkeiten zum Erstellen einer Metrikansicht finden Sie unter Erstellen einer Metrikansicht.
Schritt 8: Die Metrikansicht abfragen
Fragen Sie die Metrikansicht mit fachanwenderfreundlicher Syntax ab. Die MEASURE()-Funktion aggregiert einen Messwert auf der Granularität der Felder, die Sie auswählen.
Kennzahlen nach Dimension aggregieren
Dieses Beispiel aggregiert Kennzahlen über mehrere Felder hinweg. Sie gibt den Gesamtumsatz, die Auftragsanzahl und den durchschnittlichen Auftragswert nach Kundenland und Marktsegment zurück, der zuerst nach dem höchsten Umsatz bewertet wird:
SELECT
customer_nation,
market_segment,
MEASURE(total_revenue) AS total_revenue,
MEASURE(order_count) AS order_count,
MEASURE(avg_order_value) AS avg_order_value
FROM catalog.schema.tpch_sales_analytics
GROUP BY customer_nation, market_segment
ORDER BY total_revenue DESC;
Analysieren eines monatlichen Trends
In diesem Beispiel wird ein Zeitfeld mit Measures kombiniert, um einen Trend nachzuverfolgen. Sie gibt den Gesamtumsatz und den Offenauftragsumsatz (Backlog) nach Monat und Bestellstatus zurück:
SELECT
order_month,
order_status,
MEASURE(total_revenue) AS total_revenue,
MEASURE(open_order_revenue) AS open_order_revenue
FROM catalog.schema.tpch_sales_analytics
GROUP BY order_month, order_status
ORDER BY order_month;
Übergeben eines Parameterwerts
Da die Metrikansicht einen Parameter definiert, können Sie ihn als Tabellenwertfunktion aufrufen und einen Wert zur Abfragezeit übergeben. Die folgende Abfrage wendet einen Rabatt von 10% an. Da discount standardmäßig auf 0 festgelegt ist, geben Abfragen, die das Argument weglassen, nicht diskontierte Umsätze zurück:
SELECT
customer_nation,
MEASURE(total_revenue) AS total_revenue,
MEASURE(discounted_revenue) AS discounted_revenue
FROM catalog.schema.tpch_sales_analytics(discount => 0.1)
GROUP BY customer_nation
ORDER BY discounted_revenue DESC;
Was Sie gelernt haben
Sie haben eine Metrikansicht erstellt, die Folgendes veranschaulicht:
| Funktion | Example |
|---|---|
| Snowflake-Schemabeitritte | Bestellungen an Kunden zu Nation (geschachtelte n:1-Joins) |
| Zeitfelder | Datum, Monat, Jahres granularität |
| Transformierte Felder |
CASE Anweisungen, SPLIT Funktionen |
| Einfache Maßnahmen |
COUNT, SUM |
| Kompositierbarkeit |
avg_order_value und revenue_per_customer verweisen auf zuvor definierte Measures unter Verwendung von MEASURE() |
| Gefilterte Messungen |
FILTER (WHERE ...) für bedingte Aggregationen |
| Fenstermaße | 7-tägige rollierende Kundenzählung mit trailing 7 day |
| Parameter |
discount Parameter, der im discounted_revenue Maß angewendet wird |
| Agentmetadaten |
display_name, format zu synonyms Feldern und Kennzahlen |
Weitere Ressourcen
- Fenstermaße zum Berechnen von rollierenden Mittelwerten und Jahres-bis-Datumssummen.
- Materialisierung für Metrikansichten , um die Abfrageleistung für große Datasets zu verbessern.
- Verwenden Sie Metrikansichten , um Ihre Metrikansicht in AI/BI-Dashboards zu verwenden.