Freigeben über


Referenz zur YaML-Syntax der Metrikansicht

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:
  • current: Zeilen, in denen der Fensterreihenfolgewert dem Wert der aktuellen Zeile entspricht.
  • cumulative: Alle Zeilen, in denen der Fensterreihenfolgewert kleiner oder gleich dem Wert der aktuellen Zeile ist.
  • trailing <value> <unit>: Zeilen aus der aktuellen Zeile, die um die angegebenen Zeiteinheiten rückwärts gehen (z. B trailing 7 day. ). Enthält nicht die aktuelle Einheit.
  • leading <value> <unit>: Zeilen aus der aktuellen Zeile, die von den angegebenen Zeiteinheiten (z. B leading 3 month. ) vorwärts ausgeführt werden. Enthält nicht die aktuelle Einheit.
  • all: Alle Zeilen unabhängig vom Fensterreihenfolgewert.
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:

  1. Verwenden Sie den ALTER VIEW Befehl in einem Notizbuch oder SQL-Editor.
  2. Kopieren Sie die ursprüngliche YAML-Definition in den $$..$$ Abschnitt danach AS. Ändern Sie den Wert von version in 1.1.
  3. 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.

  1. Kopieren Sie alle Unity-Katalogkommentare in die entsprechenden comment Felder in Ihrer YAML-Definition. Ändern Sie den Wert von version in 1.1.
  2. 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.