Modellmetrikansichten

Metrikansichten erstellen eine semantische Ebene für Ihre Daten, transformieren Tabellen und Ansichten in standardisierte Geschäftsmetriken. Sie definieren, was gemessen werden soll, wie es aggregiert wird und wie es segmentiert wird. Daher meldet jeder Benutzer in der gesamten Organisation den gleichen Wert für denselben KPI, wodurch inkonsistente Berichte beseitigt und flexible Analysen in allen Feldern ermöglicht werden.

Die von Ihnen definierten Kernkomponenten sind Quellen, Verknüpfungen, Filter, Felder und Measures.

Ein vollständiges Beispiel mit Verknüpfungen, Feldern, Measures und Agentmetadaten finden Sie im Lernprogramm: Erstellen einer Metrikansicht mit Verknüpfungen und Datenmodellierung.

Kernkomponenten

Eine Metrikansicht besteht aus den folgenden Elementen:

Bestandteil Beschreibung Beispiel
Quelle Die Basistabelle, Ansicht oder SQL-Abfrage, die die Daten enthält. samples.tpch.orders
Joins Beziehungen zwischen Tabellen, Ansichten und Metrikansichten zum Anreichern von Daten. Tabelle orders mit Tabelle customers auf customer_key verbinden.
Filter Bedingungen, die auf die Quelldaten angewendet werden, um den Bereich zu definieren.
  • status = 'completed'
  • order_date > '2024-01-01'
Felder Spalten, die zum Gruppieren, Filtern und Aggregieren von Metriken verwendet werden. Enthält kategorisierte Spalten und nicht aggregierte numerische Spalten. Auch als Dimensionen bezeichnet. Produktkategorie, Bestellmonat, Einzelpreis
Maßnahmen Spaltenaggregationen, die Metriken erzeugen. COUNT(o_orderkey) als Bestellanzahl, SUM(o_totalprice) als Gesamtumsatz

Definieren einer Quelle

Sie können ein tabellenähnliches Objekt oder eine SQL-Abfrage als Quelle für Ihre Metrikansicht verwenden. Sie müssen mindestens SELECT Privilegien für jede referenzierte Ressource haben.

Ein tabellenähnliches Objekt ist ein Unity Catalog-Objekt , das ein tabellarisches Schema verfügbar macht und Abfragen unterstützt SELECT , einschließlich Tabellen, Ansichten, materialisierte Ansichten, Streamingtabellen, Fremdtabellen, Systemtabellen und Metrikansichten.

Verwenden einer tabellenähnlichen Ressource als Quelle

Wenn Sie ein tabellenähnliches Objekt als Quelle verwenden möchten, geben Sie den vollqualifizierten Namen an. Beispiel: samples.tpch.orders.

Verwenden einer Metrikansicht als Quelle

Sie können eine vorhandene Metrikansicht als Quelle für eine neue Metrikansicht verwenden:

version: 1.1

source: views.examples.source_metric_view

fields:
  - name: Order month
    expr: '`Order Month`'

measures:
  - name: Latest order month
    expr: MAX(`Order month`)
  - name: Latest order year
    expr: "DATE_TRUNC('year', MEASURE(`Latest order month`))"

Bei der Verwendung einer Metrikansicht als Quelle gelten dieselben Kompositionsregeln für die Referenzierung von Feldern und Kennzahlen. Siehe Kompositierbarkeit.

Verwenden einer SQL-Abfrage als Quelle

Um eine SQL-Abfrage zu verwenden, schreiben Sie den Abfragetext direkt in das YAML:

version: 1.1

source: SELECT * FROM samples.tpch.orders o LEFT JOIN samples.tpch.customer c ON o.o_custkey
  = c.c_custkey

fields:
  - name: Order key
    expr: o_orderkey

measures:
  - name: Order Count
    expr: COUNT(o_orderkey)

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üsseln, Fremdschlüsseln und eindeutigen Einschränkungen und Abfrageoptimierung mithilfe von Primärschlüsseln und eindeutigen Einschränkungen.

Felder

Felder, auch als Dimensionen bezeichnet, sind Metrikansichtsspalten, die Sie zur Abfragezeit in SELECT, WHEREund GROUP BY Klauseln verwenden können. Ein Feld kann eine kategorisierte Spalte sein, z. B. Region oder Status, oder eine nicht aggregierte numerische Spalte, z. B. Preis oder Menge, die Sie zur Abfragezeit aggregieren können. Jeder Feldausdruck muss einen skalaren Wert zurückgeben. Sie kann auf Spalten aus den Zuvor in der Metrikansicht definierten Quelldaten oder -feldern verweisen. Jedes Feld besteht aus zwei Komponenten:

  • name: Der Alias der Spalte
  • expr: Ein SQL-Ausdruck, der auf die Quelldaten oder zuvor definierten Felder in der Metrikansicht verweist

Warning

Zeichenfolgenähnliche metrische Ansichtsfelder sind immer STRING, auch wenn die Quellspalte ist CHAR oder VARCHAR. Da CHAR(n) Platzabstand verloren geht, können Vergleiche unterschiedliche Ergebnisse zurückgeben. Zum Beispiel entspricht column = 'COLLEGE' einem CHAR(10)-Wert in der Quelltabelle (der mit Leerzeichen aufgefüllt ist), aber nicht dem Feld der Metrikansicht.

Maßnahmen

Kennzahlen 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. Kennzahlen können auf Basisspalten in den Quelldaten, zuvor definierten Feldern oder zuvor definierten Kennzahlen verweisen. Jede Maßnahme besteht aus den folgenden Komponenten:

  • name: Der Alias der Kennzahl
  • expr: Ein Aggregat-SQL-Ausdruck, der SQL-Aggregatfunktionen enthalten kann

Im folgenden Beispiel werden allgemeine Muster von Maßzahlen zum Analysieren von Auftrag- und Umsatzdaten veranschaulicht. In diesen Beispielen wird die Tabelle TPC-H Bestellungen verwendet, die Transaktionsdaten enthält, einschließlich Bestellpreise (o_totalprice), Kunden-IDs (o_custkey), Bestellschlüssel (o_orderkey), Bestelldaten (o_orderdate) und Prioritätsstufen (o_orderpriority):

measures:
  # Simple count measure
  - name: Order Count
    expr: COUNT(1)

  # Sum aggregation measure
  - name: Total Revenue
    expr: SUM(o_totalprice)

  # Distinct count measure
  - name: Unique Customers
    expr: COUNT(DISTINCT o_custkey)

  # Calculated measure combining multiple aggregations
  - name: Average Order Value
    expr: SUM(o_totalprice) / COUNT(DISTINCT o_orderkey)

  # Filtered measure with WHERE condition
  - name: High Priority Order Revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderpriority = '1-URGENT')

  # Measure using a field
  - name: Average Revenue per Month
    expr: SUM(o_totalprice) / COUNT(DISTINCT DATE_TRUNC('MONTH', o_orderdate))

Eine Liste der Aggregatfunktionen finden Sie unter " Aggregatfunktionen ".

Anwenden von Filtern

Ein Filter gilt für alle Abfragen, die auf die Metrikansicht verweisen. Informationen zum Definieren eines Filters in der Benutzeroberfläche finden Sie unter Schritt 3: Definieren eines Filters.

Um einen Filter in der YAML-Definition zu definieren, schreiben Sie einen booleschen Ausdruck. Das folgende Beispiel zeigt allgemeine Filtermuster:

# Single condition
filter: o_orderdate > '2024-01-01'

# Multiple conditions
filter: o_orderdate > '2024-01-01' AND o_orderstatus = 'F'

# IN clause
filter: o_orderstatus IN ('F', 'P') AND o_orderdate >= '2024-01-01'

Arbeiten mit Verknüpfungen

Metrikansichten unterstützen Verknüpfungen, um Ihre Quelldaten mit Attributen aus verknüpften Tabellen zu bereichern. Sie können Sternschemas modellieren (Faktentabelle, die mit Dimensionstabellen verknüpft ist), Snowflake-Schemas (mehrstufige Dimensionsverknüpfungen) und 1:n-Beziehungen (Fakterweiterung aus einer Dimensionsquelle). Ausführliche Informationen zu Verknüpfungstypen, Kardinalität, Schemamustern und Einschränkungen finden Sie unter Verknüpfungen in Metrikansichten.

Informationen zum Definieren von Verknüpfungen in der Benutzeroberfläche finden Sie unter Schritt 2: Hinzufügen einer Verknüpfung. Verwenden Sie die Muster in den folgenden Abschnitten, um Verknüpfungen in der YAML-Definition zu definieren.

Hinweis

Verknüpfte Tabellen können keine Spalten des Typs MAP enthalten. Informationen zum Entpacken von Werten aus Spalten des Typs MAP finden Sie unter Geschachtelte Elemente aus einer Karte oder einem Array entpacken.

Modellsternschemata

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 jeweilige Abfrage auf Grundlage der ausgewählten Felder und Kennzahlen erforderlich sind.

Geben Sie Verknüpfungsspalten entweder mit einer on-Klausel (boolescher Ausdruck) oder mit einer using-Klausel (gemeinsame Spaltennamen) an. Die Verknüpfung muss einer n:1-Beziehung folgen. Bei n:n-Beziehungen wählt die Engine die erste übereinstimmende Zeile aus der verknüpften Dimensionstabelle aus.

Das folgende Beispiel verknüpft orders (Faktentabelle) mit customer (Dimensionstabelle) und macht Kundenattribute als Felder verfügbar. Die Einstellung rely.at_most_one_match: true gibt an, dass es sich bei der Verknüpfung um eine Many-to-one-Beziehung handelt (jede Bestellung hat genau einen Kunden), was der Engine ermöglicht, Abfragen zu optimieren, die nach Feldern aus der verknüpften Tabelle filtern.

Warning

Legen Sie at_most_one_match: true nur fest, wenn es sich um eine Many-to-one-Beziehung handelt. Diese Eigenschaft wird zur Laufzeit nicht überprüft. Wenn die Verknüpfung zu einer Auffächerung führt, liefern Kennzahlen falsche Ergebnisse.

Siehe Optimieren von Verknüpfungen mit rely.

version: 1.1
source: samples.tpch.orders

joins:
  - name: customer
    source: samples.tpch.customer
    on: source.o_custkey = customer.c_custkey

fields:
  - name: Customer name
    expr: customer.c_name

measures:
  - name: Total revenue
    expr: SUM(o_totalprice)

YAML-Syntax und -Formatierung

Metrische Ansichtsdefinitionen folgen der standardmäßigen YAML-Notationssyntax. Informationen zur erforderlichen Syntax und Formatierung finden Sie in der YaML-Syntaxreferenz zur Metrikansicht .

Bewährte Methoden

Verwenden Sie beim Modellieren von Metrikansichten die folgenden Richtlinien:

  • Modell atomische Kennzahl: Beginnen Sie mit der Definition der einfachsten Kennzahlen zuerst (z. B SUM(revenue). , COUNT(DISTINCT customer_id)). Erstellen Sie komplexe Kennzahlen mithilfe der Kompositierbarkeit.
  • Feldwerte standardisieren: Verwenden Sie Transformationen (wie CASE Anweisungen), um Datenbankcodes in eindeutige Bezeichnungen umzuwandeln (z. B. den Bestellstatus „O“ in „Offen“ und „F“ in „Erfüllt“).
  • Definieren sie den Bereich mit Filtern: Wenn eine Metrikansicht nur abgeschlossene Bestellungen enthalten soll, definieren Sie diesen Filter in der Metrikansicht, damit Benutzer nicht versehentlich unvollständige Daten einschließen können.
  • Verwenden Sie eine klare Benennung: Metrische Namen sollten für Geschäftsbenutzer erkennbar sein (z. B. "Customer Lifetime Value" anstelle von cltv_agg_measure).
  • Separate Zeitfelder: Fügen Sie granulare Zeitfelder (z. B. "Bestelldatum") und abgeschnittene Zeitfelder (z. B. "Bestellmonat" oder "Bestellwoche") ein, um sowohl Detailebene als auch Trendanalyse zu ermöglichen.

Weitere Ressourcen