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.
Auf dieser Seite wird die vollständige YAML-Grammatik für Metrikansichten erläutert. Metrische Ansichtsdefinitionen folgen der standardmäßigen YAML-Notationssyntax.
Die Mindestversionsanforderungen für laufzeit- und YAML-Spezifikationen für jedes Feature finden Sie unter Verfügbarkeit der metrischen Ansichtsfeatures.
Weitere Informationen zu YAML-Spezifikationen finden Sie in der YAML-Spezifikationsdokumentation 1.2.2 .
YAML-Übersicht
Die YAML-Definition für eine Metrikansicht enthält die folgenden Felder auf oberster Ebene:
| Feld | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
version |
Erforderlich | String | Version der Spezifikation für die Metrikansicht. Siehe YAML-Spezifikationsversionen. |
comment |
Fakultativ | String | Beschreibung der Metrikansicht. |
source |
Erforderlich | String | Die Quelldaten für die Metrikansicht. Dabei kann es sich um ein beliebiges tabellenähnliches Unity-Katalogobjekt handeln, einschließlich einer Metrikansicht oder einer SQL-Abfrage. Siehe Quelle. |
filter |
Fakultativ | String | Ein boolescher SQL-Ausdruck, der für alle Abfragen gilt. Siehe Filter. |
joins |
Fakultativ | Array | Sternschema- und Schneeflakeschema-Verknüpfungen. Siehe Verknüpfungen. |
dimensions |
Bedingt | Array | Dimensionsdefinitionen, einschließlich Name, Ausdruck und optionaler semantischer Metadaten. Erforderlich, wenn keine measures angegeben ist. Siehe Dimensionen. |
measures |
Bedingt | Array | Measuredefinitionen, einschließlich Name, Aggregatausdruck und optionaler semantischer Metadaten. Erforderlich, wenn keine dimensions angegeben ist. Siehe Measures. |
materialization |
Fakultativ | Objekt | Konfiguration zum Beschleunigen von Abfragen mit materialisierten Ansichten. Enthält Aktualisierungszeitplan- und materialisierte Ansichtsdefinitionen. Siehe Materialisierung. |
Quelle
Das source Feld gibt die Datenquelle für die Metrikansicht an. Sie können eine tabellenähnliche Ressource wie Tabellen, Ansichten und Metrikansichten oder eine SQL-Abfrage als Quelle verwenden. Die Kompositierbarkeit gilt für metrische Ansichten. Wenn Sie eine Metrikansicht als Quelle verwenden, können Sie in der neuen Metrikansicht auf seine Dimensionen und Measures verweisen. Siehe Kompositierbarkeit.
Tabellenähnliche Ressourcenquelle
Verweisen Sie mithilfe des dreiteiligen Namens auf eine tabellenähnliche Ressource:
source: catalog.schema.source_table
SQL-Abfragequelle
Um eine SQL-Abfrage zu verwenden, schreiben Sie den Abfragetext direkt in das YAML:
source: SELECT * FROM samples.tpch.orders o
LEFT JOIN samples.tpch.customer c
ON o.o_custkey = c.c_custkey
Hinweis
Wenn Sie eine SQL-Abfrage als Quelle mit einer JOIN Klausel verwenden, legen Sie Primär- und Fremdschlüsseleinschränkungen für zugrunde liegende Tabellen fest, und verwenden Sie die RELY Option für eine optimale Abfrageleistung. Weitere Informationen finden Sie unter Deklarieren von Primärschlüssel- und Fremdschlüsselbeziehungen und Abfrageoptimierung mithilfe von Primärschlüsseleinschränkungen.
Filter
Ein Filter in der YAML-Definition gilt für alle Abfragen, die auf die Metrikansicht verweisen. Schreiben Sie Filter als boolesche SQL-Ausdrücke.
# Single condition filter
filter: o_orderdate > '2024-01-01'
# Multiple conditions with AND
filter: o_orderdate > '2024-01-01' AND o_orderstatus = 'F'
# Multiple conditions with OR
filter: o_orderpriority = '1-URGENT' OR o_orderpriority = '2-HIGH'
# Complex filter with IN clause
filter: o_orderstatus IN ('F', 'P') AND o_orderdate >= '2024-01-01'
# Filter with NOT
filter: o_orderstatus != 'O' AND o_totalprice > 1000.00
# Filter with LIKE pattern matching
filter: o_comment LIKE '%express%' AND o_orderdate > '2024-01-01'
Verknüpfungen
Verknüpfungen in Metrikansichten unterstützen sowohl direkte Verknüpfungen aus einer Faktentabelle als auch Bemaßungstabellen (Sternschema) und Multi-Hop-Verknüpfungen über normalisierte Dimensionstabellen (Schneeflakeschemas). Sie können auch mithilfe einer Anweisung mit einer SELECT SQL-Abfrage verknüpft werden. Siehe Verwenden einer SQL-Abfrage als Quelle.
Hinweis
Verknüpfte Tabellen können keine Spalten des Typs MAP enthalten. Informationen zum Entpacken von Werten aus MAP Typspalten finden Sie unter Explode geschachtelte Elemente aus einer Karte oder einem Array.
Jede Verknüpfungsdefinition enthält die folgenden Felder:
| Feld | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
name |
Erforderlich | String | Alias für die verknüpfte Tabelle oder SQL-Abfrage. Verwenden Sie diesen Alias, wenn Sie auf Spalten aus der verknüpften Tabelle in Dimensionen oder Measures verweisen. |
source |
Erforderlich | String | Dreiteiliger Name der zu verbindenden Tabelle. Kann auch eine SQL-Abfrage sein. |
on |
Bedingt | String | Boolescher Ausdruck, der die Verknüpfungsbedingung definiert. Erforderlich, wenn using nicht angegeben. |
using |
Bedingt | Array | Liste der Spaltennamen, die sowohl in der übergeordneten Tabelle als auch in der verknüpften Tabelle vorhanden sind. Erforderlich, wenn on nicht angegeben. |
joins |
Fakultativ | Array | Eine Liste der geschachtelten Verknüpfungsdefinitionen für die Snowflake-Schemamodellierung. Siehe Verfügbarkeit der Metrikansichtsfeatures für Mindestlaufzeitanforderungen. |
Star-Schemabeitritte
In einem Sternschema ist die source die Faktentabelle und wird mit einer oder mehreren Dimensionstabellen mithilfe eines LEFT OUTER JOIN verbunden. Metrikansichten verknüpfen die Fakten- und Dimensionstabellen, die für die spezifische Abfrage erforderlich sind, basierend auf den ausgewählten Spalten.
Angeben von Verknüpfungsspalten mithilfe einer ON Klausel oder einer USING Klausel:
- ON-Klausel: Verwendet einen booleschen Ausdruck, um die Verknüpfungsbedingung zu definieren.
- USING-Klausel: Listet Spalten mit demselben Namen sowohl in der übergeordneten Tabelle als auch in der verknüpften Tabelle auf.
Die Verbindung sollte einer Eins-zu-viele-Beziehung folgen. In Fällen von viele-zu-viele wird die erste übereinstimmende Zeile aus der verbundenen Dimensionstabelle ausgewählt.
version: 1.1
source: samples.tpch.lineitem
joins:
- name: orders
source: samples.tpch.orders
on: source.l_orderkey = orders.o_orderkey
- name: part
source: samples.tpch.part
on: source.l_partkey = part.p_partkey
dimensions:
- name: Order Status
expr: orders.o_orderstatus
- name: Part Name
expr: part.p_name
measures:
- name: Total Revenue
expr: SUM(l_extendedprice * (1 - l_discount))
- name: Line Item Count
expr: COUNT(1)
Hinweis
Der source Namespace verweist auf Spalten aus der Quelle der Metrikansicht, während eine Verknüpfung name auf Spalten aus dieser verknüpften Tabelle verweist. In , source.l_orderkey = orders.o_orderkey bezieht sich beispielsweise sourceauf die verknüpfte Tabelle und lineitem bezieht orders sich auf sie. Wenn in einer on Klausel kein Präfix angegeben wird, wird standardmäßig auf die verknüpfte Tabelle verwiesen.
Snowflake-Schemabeitritte
Ein Schneeflakeschema erweitert ein Sternschema durch Normalisieren von Dimensionstabellen und verbinden sie mit Unterdimensionen. Dadurch wird eine mehrstufige Verknüpfungsstruktur erstellt. Siehe Verfügbarkeit der Metrikansichtsfeatures für Mindestlaufzeitanforderungen.
Um ein Schneeflakeschema zu definieren, schachteln joins Sie in einer übergeordneten Verknüpfungsdefinition:
version: 1.1
source: 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
dimensions:
- name: customer_nation
expr: customer.nation.n_name
Maße
Dimensionen sind Spalten, die zur Abfragezeit in SELECT, WHEREund GROUP BY Klauseln verwendet werden. Jeder Ausdruck muss einen skalaren Wert zurückgeben. Dimensionen können aus den Quelldaten oder früher definierten Dimensionen in der Metrikansicht auf Spalten verweisen.
Jede Dimensiondefinition enthält die folgenden Felder:
| Feld | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
name |
Erforderlich | String | Der Spaltenalias für die Dimension. |
expr |
Erforderlich | String | Ein SQL-Ausdruck, der auf Spalten aus den Quelldaten oder eine zuvor definierte Dimension verweisen kann. |
comment |
Fakultativ | String | Beschreibung der Dimension. Wird in Unity-Katalog- und Dokumentationstools angezeigt. |
display_name |
Fakultativ | String | Lesbare Bezeichnungen, die in Visualisierungstools angezeigt werden. Auf 255 Zeichen beschränkt. Erfordert YAML-Spezifikation 1.1. Siehe Verfügbarkeit der Metrikansichtsfeatures. |
format |
Fakultativ | Map | Formatspezifikation für die Anzeige von Werten. Erfordert YAML-Spezifikation 1.1. Siehe Formatspezifikationen. |
synonyms |
Fakultativ | Array | Alternative Namen für LLM-Tools zum Ermitteln der Dimension. Bis zu 10 Synonyme, jeweils auf 255 Zeichen beschränkt. Erfordert YAML-Spezifikation 1.1. Siehe Synonyme. |
Beispiel:
dimensions:
# Basic dimension
- name: order_date
expr: o_orderdate
comment: 'Date the order was placed'
display_name: 'Order Date'
# Dimension with SQL expression
- name: order_month
expr: DATE_TRUNC('MONTH', o_orderdate)
display_name: 'Order Month'
# Dimension with synonyms
- name: order_status
expr: CASE
WHEN o_orderstatus = 'O' THEN 'Open'
WHEN o_orderstatus = 'P' THEN 'Processing'
WHEN o_orderstatus = 'F' THEN 'Fulfilled'
END
display_name: 'Order Status'
synonyms: ['status', 'fulfillment status']
Maßnahmen
Measures sind Ausdrücke, die Ergebnisse ohne eine vordefinierte Aggregationsebene erzeugen. Sie müssen mithilfe von Aggregatfunktionen ausgedrückt werden. Verwenden Sie die MEASURE Funktion, um auf ein Measure in einer Abfrage zu verweisen. Measures können auf Basisfelder in den Quelldaten, früher definierten Dimensionen oder früher definierten Measures verweisen.
Jede Measuredefinition enthält die folgenden Felder:
| Feld | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
name |
Erforderlich | String | Der Alias für das Measure. |
expr |
Erforderlich | String | Ein Aggregat-SQL-Ausdruck, der SQL-Aggregatfunktionen enthält. |
comment |
Fakultativ | String | Beschreibung der Maßnahme. Wird in Unity-Katalog- und Dokumentationstools angezeigt. |
display_name |
Fakultativ | String | Lesbare Bezeichnungen, die in Visualisierungstools angezeigt werden. Auf 255 Zeichen beschränkt. Erfordert YAML-Spezifikation 1.1. Siehe Verfügbarkeit der Metrikansichtsfeatures. |
format |
Fakultativ | Map | Formatspezifikation für die Anzeige von Werten. Erfordert YAML-Spezifikation 1.1. Siehe Formatspezifikationen. |
synonyms |
Fakultativ | Array | Alternative Namen für LLM-Tools, um das Measure zu ermitteln. Bis zu 10 Synonyme, jeweils auf 255 Zeichen beschränkt. Erfordert YAML-Spezifikation 1.1. Siehe Verfügbarkeit der Metrikansichtsfeatures. |
window |
Fakultativ | Array | Fensterspezifikationen für fensterierte, kumulative oder semiadditive Aggregationen. Wenn nicht angegeben, verhält sich das Measure als Standardaggregat. Siehe Fenstermaße. |
Eine Liste der Aggregatfunktionen finden Sie unter " Aggregatfunktionen ".
Beispiel:
measures:
# Simple count measure
- name: order_count
expr: COUNT(1)
display_name: 'Order Count'
# Sum aggregation measure with synonyms
- name: total_revenue
expr: SUM(o_totalprice)
comment: 'Gross revenue from all orders'
display_name: 'Total Revenue'
synonyms: ['revenue', 'total sales']
# Distinct count measure
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: 'Unique Customers'
# Calculated measure combining multiple aggregations
- name: avg_order_value
expr: SUM(o_totalprice) / COUNT(DISTINCT o_orderkey)
display_name: 'Avg Order Value'
synonyms: ['AOV', 'average order']
# Filtered measure with WHERE condition
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: 'Open Order Revenue'
synonyms: ['backlog', 'outstanding revenue']
Fenstermaße
Von Bedeutung
Dieses Feature ist experimentell.
Das window Feld definiert fensterierte, kumulierte oder semiadditive Aggregationen für Measures. Ausführliche Informationen zu Fenstermaßen und Anwendungsfällen finden Sie unter Window-Measures.
Jede Fensterspezifikation enthält die folgenden Felder:
| Feld | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
order |
Erforderlich | String | Die Dimension, die die Reihenfolge des Fensters bestimmt. |
range |
Erforderlich | String | Der Umfang des Fensters. Unterstützte Werte:
|
semiadditive |
Erforderlich | String | Aggregationsmethode. Unterstützte Werte: first oder last |
Beispiel für Fenstermaß
Im folgenden Beispiel wird eine fortlaufende 7-Tage-Anzahl eindeutiger Kunden berechnet:
version: 1.1
source: samples.tpch.orders
dimensions:
- name: order_date
expr: o_orderdate
measures:
- name: rolling_7day_customers
expr: COUNT(DISTINCT o_custkey)
display_name: '7-Day Rolling Customers'
window:
- order: order_date
range: trailing 7 day
semiadditive: last
Materialisation
Von Bedeutung
Dieses Feature ist experimentell.
Das materialization Feld konfiguriert die automatische Abfragebeschleunigung mithilfe materialisierter Ansichten. Ausführliche Informationen dazu, wie Materialisierung, Anforderungen und bewährte Methoden funktionieren, finden Sie unter Materialization für Metrikansichten.
Das materialization Feld enthält die folgenden Felder auf oberster Ebene:
| Feld | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
schedule |
Erforderlich | String | Zeitplan aktualisieren. Verwendet dieselbe Syntax wie die Zeitplanklausel für materialisierte Ansichten. Die TRIGGER ON UPDATE-Klausel wird nicht unterstützt. |
mode |
Erforderlich | String | Muss auf relaxed festgelegt sein. |
materialized_views |
Erforderlich | Array | Liste der materialisierten Ansichten, die materialisiert werden sollen. Für jeden Eintrag sind die unten beschriebenen Felder erforderlich. |
Jeder Eintrag enthält materialized_views die folgenden Felder:
| Feld | Erforderlich | Typ | Beschreibung |
|---|---|---|---|
name |
Erforderlich | String | Der Name der Materialisierung. |
type |
Erforderlich | String | Art der Materialisierung. Unterstützte Werte: aggregated (erfordert dimensions, measuresoder beide) oder unaggregated. |
dimensions |
Bedingt | Array | Liste der zu materialisierenden Dimensionsnamen. Erforderlich, falls type angegeben aggregated und nicht measures angegeben. |
measures |
Bedingt | Array | Liste der zu materialisierenden Measurenamen. Erforderlich, falls type angegeben aggregated und nicht dimensions angegeben. |
Materialisierungsbeispiel
Im folgenden Beispiel wird eine Metrikansicht mit mehreren Materialisierungen definiert:
version: 1.1
source: samples.tpch.orders
dimensions:
- name: order_date
expr: o_orderdate
- name: order_status
expr: o_orderstatus
measures:
- name: total_revenue
expr: SUM(o_totalprice)
- name: order_count
expr: COUNT(1)
materialization:
schedule: every 6 hours
mode: relaxed
materialized_views:
- name: baseline
type: unaggregated
- name: daily_status_metrics
type: aggregated
dimensions:
- order_date
- order_status
measures:
- total_revenue
- order_count
Spaltennamenverweise
Wenn Sie in YAML-Ausdrücken auf Spaltennamen verweisen, die Leerzeichen oder Sonderzeichen enthalten, schließen Sie die betreffenden Spaltennamen in Backticks ein, um die Leer- oder Sonderzeichen zu maskieren. Wenn der Ausdruck mit einem Backtick beginnt und direkt als YAML-Wert verwendet wird, schließen Sie den gesamten Ausdruck in doppelte Anführungszeichen ein. Gültige YAML-Werte dürfen nicht mit einem Backtick beginnen.
Formatierungsbeispiele
In den folgenden Beispielen erfahren Sie, wie Sie YAML in gängigen Szenarien richtig formatieren.
Auf einen Spaltennamen verweisen
In der folgenden Tabelle wird gezeigt, wie Spaltennamen je nach den darin enthaltenen Zeichen formatiert werden.
| Fall | Name(n) der Quellspalten | Referenzausdrücke(n) | Hinweise |
|---|---|---|---|
| Keine Leerzeichen | revenue |
expr: "revenue"expr: 'revenue'expr: revenue |
Verwenden Sie doppelte Anführungszeichen, einfache Anführungszeichen oder keine Anführungszeichen um den Spaltennamen. |
| Mit Leerzeichen | First Name |
expr: "`First Name`" |
Verwenden Sie Backticks, um Leerzeichen zu maskieren. Schließen Sie den gesamten Ausdruck in doppelte Anführungszeichen ein. |
| Spaltenname mit Leerzeichen in einem SQL-Ausdruck |
First Name und Last Name |
expr: CONCAT(`First Name`, , `Last Name`) |
Wenn der Ausdruck nicht mit Backticks beginnt, sind keine doppelten Anführungszeichen erforderlich. |
| Der Name der Quellspalte enthält Anführungszeichen. | "name" |
expr: '`"name"`' |
Maskieren Sie die doppelten Anführungszeichen im Spaltennamen mit Backticks. Schließen Sie diesen Ausdruck in einfache Anführungszeichen in die YAML-Definition ein. |
Verwenden Sie Ausdrücke mit Doppelpunkten
| Fall | Ausdruck | Hinweise |
|---|---|---|
| Ausdrücke mit Doppelpunkten | expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END" |
Umschließen des gesamten Ausdrucks in doppelte Anführungszeichen zur korrekten Interpretation |
Hinweis
YAML interpretiert nicht in Anführungszeichen stehende Doppelpunkte als Trennzeichen zwischen Schlüssel und Wert. Schließen Sie Ausdrücke, die Doppelpunkte enthalten, deshalb immer in doppelte Anführungszeichen ein.
Mehrzeiliger Einzug
| Fall | Ausdruck | Hinweise |
|---|---|---|
| Mehrzeiliger Einzug | expr: \| CASE WHEN revenue > 100 THEN 'High' ELSE 'Low' END |
Rücken Sie den Ausdruck unter der ersten Zeile ein |
Hinweis
Verwenden Sie den | Blockskalierer nach expr: für mehrzeilige Ausdrücke. Für eine korrekte Analyse müssen alle Zeilen einen Einzug von mindestens zwei Leerzeichen über den Schlüssel expr hinaus aufweisen.
Aktualisieren Von YAML auf 1.1
Das Upgrade einer Metrikansicht auf yaML-Spezifikation, Version 1.1, erfordert Sorgfalt, da Kommentare anders behandelt werden als in früheren Versionen.
Arten von Kommentaren
- YAML-Kommentare (#):Inline- oder einzeilige Kommentare, die direkt in der YAML-Datei mit dem Symbol #geschrieben wurden.
- Kommentare im Unity-Katalog: Kommentare, die im Unity-Katalog für die Metrikansicht oder die zugehörigen Spalten (Dimensionen und Measures) gespeichert sind. Diese sind von YAML-Kommentaren getrennt.
Überlegungen zum Upgrade
Wählen Sie den Upgradepfad aus, der der Behandlung von Kommentaren in der Metrikansicht entspricht. Die folgenden Optionen beschreiben die verfügbaren Ansätze und stellen Beispiele bereit.
Option 1: Beibehalten von YAML-Kommentaren mithilfe von Notizbüchern oder dem SQL-Editor
Wenn Ihre Metrikansicht YAML-Kommentare (#) enthält, die Sie beibehalten möchten, führen Sie die folgenden Schritte aus:
- Verwenden Sie den
ALTER VIEWBefehl in einem Notizbuch oder SQL-Editor. - Kopieren Sie die ursprüngliche YAML-Definition in den
$$..$$Abschnitt danachAS. Ändern Sie den Wert vonversionin1.1. - Speichern Sie die Metrikansicht.
ALTER VIEW metric_view_name AS
$$
# The notebook preserves inline comments
version: 1.1
source: samples.tpch.orders
dimensions:
- name: order_date # The notebook preserves inline comments
expr: o_orderdate
measures:
# The notebook preserves commented out definitions
# - name: total_orders
# expr: COUNT(o_orderid)
- name: total_revenue
expr: SUM(o_totalprice)
$$
Warnung
Beim Ausführen ALTER VIEW werden Unity-Katalogkommentare entfernt, es sei denn, sie werden explizit in die comment Felder der YAML-Definition eingeschlossen. Informationen zum Beibehalten von Kommentaren im Unity-Katalog finden Sie unter Option 2.
Option 2: Beibehalten von Unity-Katalogkommentaren
Hinweis
Die folgenden Anleitungen gelten nur, wenn Sie den ALTER VIEW Befehl in einem Notizbuch oder SQL-Editor verwenden. Wenn Sie Ihre Metrikansicht mithilfe der YAML-Editor-Benutzeroberfläche auf Version 1.1 aktualisieren, behält die YAML-Editor-Benutzeroberfläche automatisch Ihre Unity-Katalogkommentare bei.
- Kopieren Sie alle Unity-Katalogkommentare in die entsprechenden
commentFelder in Ihrer YAML-Definition. Ändern Sie den Wert vonversionin1.1. - Speichern Sie die Metrikansicht.
ALTER VIEW metric_view_name AS
$$
version: 1.1
source: samples.tpch.orders
comment: "Metric view of order (Updated comment)"
dimensions:
- name: order_date
expr: o_orderdate
comment: "Date of order - Copied from Unity Catalog"
measures:
- name: total_revenue
expr: SUM(o_totalprice)
comment: "Total revenue"
$$
Informationen zum Versionsverlauf der YAML-Spezifikation und mindesten Laufzeitanforderungen für jedes Feature finden Sie unter Verfügbarkeit der metrischen Ansichtsfeatures.