Delen via


Naslaginformatie over YAML-syntaxis voor metrische weergave

Op deze pagina wordt de volledige YAML-grammatica voor metrische weergaven uitgelegd. Definities van metrische weergave volgen de standaard syntaxis van YAML-notatie.

Zie beschikbaarheid van metrische weergavefuncties voor minimale runtime- en YAML-specificatieversievereisten voor elke functie.

Zie de documentatie voor YAML-specificatie 1.2.2 voor meer informatie over YAML-specificaties.

OVERZICHT VAN YAML

De YAML-definitie voor een metrische weergave bevat de volgende velden op het hoogste niveau:

Veld Verplicht Typ Beschrijving
version Verplicht Snaar / Touwtje Versie van de specificatie van de metrische weergave. Zie versies van YAML-specificatie.
comment Optioneel Snaar / Touwtje Beschrijving van de metrische weergave.
source Verplicht Snaar / Touwtje De brongegevens voor de metrische weergave. Dit kan elke tabelachtige Unity Catalog-asset zijn, inclusief een metrische weergave of een SQL-query. Zie bron.
filter Optioneel Snaar / Touwtje Een Booleaanse SQL-expressie die van toepassing is op alle query's. Zie Filter.
joins Optioneel Array Stervormig schema en snowflake schema joins. Zie Joins.
dimensions Conditional Array Dimensiedefinities, waaronder naam, expressie en optionele semantische metagegevens. Vereist als er geen measures zijn opgegeven. Zie Dimensies.
measures Conditional Array Metingdefinities, waaronder naam, aggregatie-expressie en optionele semantische metagegevens. Vereist als er geen dimensions zijn opgegeven. Zie Metingen.
materialization Optioneel Object Configuratie voor het versnellen van query's met gerealiseerde weergaven. Bevat vernieuwingsschema's en gerealiseerde weergavedefinities. Zie Materialisatie.

bron

In source het veld wordt de gegevensbron voor de metrische weergave opgegeven. U kunt een tabelachtige asset, zoals tabellen, weergaven en metrische weergaven, of een SQL-query als bron gebruiken. Composability is van toepassing op metrische weergaven. Wanneer u een metrische weergave als bron gebruikt, kunt u verwijzen naar de dimensies en metingen in de nieuwe metrische weergave. Zie Composability.

Tabelachtige assetbron

Verwijs naar een tabelachtige asset met behulp van de driedelige naam:

source: catalog.schema.source_table

SQL-querybron

Als u een SQL-query wilt gebruiken, schrijft u de querytekst rechtstreeks in de YAML:

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

Opmerking

Wanneer u een SQL-query als bron gebruikt met een JOIN component, stelt u beperkingen voor primaire en refererende sleutels in voor onderliggende tabellen en gebruikt u de RELY optie voor optimale queryprestaties. Zie Relaties tussen primaire en refererende sleutels declareren en queryoptimalisatie met behulp van primaire-sleutelbeperkingen voor meer informatie.

Filter

Een filter in de YAML-definitie is van toepassing op alle query's die verwijzen naar de metrische weergave. Schrijf filters als SQL-booleaanse expressies.

# 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'

[Samenvoegingen]

Joins in metrische weergaven ondersteunen zowel directe joins van een feitentabel naar dimensietabellen (stervormig schema) als multihop-joins in genormaliseerde dimensietabellen (snowflake-schema's). U kunt ook deelnemen aan een SQL-query met behulp van een SELECT instructie. Zie Een SQL-query als bron gebruiken.

Opmerking

Gekoppelde tabellen kunnen geen typekolommen bevatten MAP . Zie Geneste elementen uit een kaart of matrix uitpakken om waarden uit MAP typekolommen uit te pakken.

Elke joindefinitie bevat de volgende velden:

Veld Verplicht Typ Beschrijving
name Verplicht Snaar / Touwtje Alias voor de gekoppelde tabel of SQL-query. Gebruik deze alias bij het verwijzen naar kolommen uit de gekoppelde tabel in dimensies of metingen.
source Verplicht Snaar / Touwtje Driedelige naam van de tabel die moet worden samengevoegd. Kan ook een SQL-query zijn.
on Conditional Snaar / Touwtje Booleaanse expressie die de joinvoorwaarde definieert. Vereist als using dit niet is opgegeven.
using Conditional Array Lijst met kolomnamen die aanwezig zijn in zowel de bovenliggende tabel als de gekoppelde tabel. Vereist als on dit niet is opgegeven.
joins Optioneel Array Een lijst met geneste joindefinities voor het modelleren van snowflake-schema's. Zie beschikbaarheid van de functie voor metrische gegevens voor minimale runtimevereisten.

Stervormige schema-joins

In een stervormig schema is de source feitentabel en wordt samengevoegd met een of meer dimensietabellen met behulp van een LEFT OUTER JOIN. Metrische weergaven voegen de feiten- en dimensietabellen toe die nodig zijn voor de specifieke query, op basis van de geselecteerde kolommen.

Kolommen voor joins opgeven met behulp van een ON component of een USING component:

  • ON-component: Gebruikt een Boole-expressie om de joinvoorwaarde te definiëren.
  • USING-component: bevat kolommen met dezelfde naam in zowel de bovenliggende tabel als de gekoppelde tabel.

De koppeling moet een veel-op-één-relatie volgen. In het geval van veel-op-veel wordt de eerste overeenkomende rij uit de gekoppelde dimensietabel geselecteerd.

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)

Opmerking

De source naamruimte verwijst naar kolommen uit de bron van de metrische weergave, terwijl een join name verwijst naar kolommen uit die gekoppelde tabel. In , source.l_orderkey = orders.o_orderkeysource verwijst bijvoorbeeld naar lineitem en orders verwijst naar de gekoppelde tabel. Als er geen voorvoegsel wordt opgegeven in een on component, wordt de verwijzing standaard ingesteld op de gekoppelde tabel.

Snowflake-schema-joins

Een snowflake-schema breidt een stervormig schema uit door dimensietabellen te normaliseren en deze te verbinden met subdimensionale waarden. Hiermee maakt u een joinstructuur met meerdere niveaus. Zie beschikbaarheid van de functie voor metrische gegevens voor minimale runtimevereisten.

Als u een snowflake-schema wilt definiëren, nestt joins u deze in een bovenliggende joindefinitie:

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

Dimensies

Dimensies zijn kolommen die worden gebruikt in SELECT, WHEREen GROUP BY componenten tijdens het uitvoeren van query's. Elke expressie moet een scalaire waarde retourneren. Dimensies kunnen verwijzen naar kolommen uit de brongegevens of eerder gedefinieerde dimensies in de metrische weergave.

Elke dimensiedefinitie bevat de volgende velden:

Veld Verplicht Typ Beschrijving
name Verplicht Snaar / Touwtje De kolomalias voor de dimensie.
expr Verplicht Snaar / Touwtje Een SQL-expressie die kan verwijzen naar kolommen uit de brongegevens of een eerder gedefinieerde dimensie.
comment Optioneel Snaar / Touwtje Beschrijving van de dimensie. Wordt weergegeven in Unity Catalog en documentatiehulpprogramma's.
display_name Optioneel Snaar / Touwtje Label dat door mensen kan worden gelezen, wordt weergegeven in hulpmiddelen voor visualisaties. Beperkt tot 255 tekens. Vereist YAML-specificatie 1.1. Bekijk de beschikbaarheid van functies in de metrische weergave.
format Optioneel Kaart Indelingsspecificatie voor hoe waarden moeten worden weergegeven. Vereist YAML-specificatie 1.1. Zie Indelingsspecificaties.
synonyms Optioneel Array Alternatieve namen voor LLM-hulpprogramma's om de dimensie te detecteren. Maximaal 10 synoniemen, elk beperkt tot 255 tekens. Vereist YAML-specificatie 1.1. Zie Synoniemen.

Voorbeeld:

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']

Maatregelen

Metingen zijn expressies die resultaten produceren zonder vooraf bepaald aggregatieniveau. Ze moeten worden uitgedrukt met behulp van statistische functies. Als u wilt verwijzen naar een meting in een query, gebruikt u de MEASURE functie. Metingen kunnen verwijzen naar basisvelden in de brongegevens, eerder gedefinieerde dimensies of eerder gedefinieerde metingen.

Elke metingdefinitie bevat de volgende velden:

Veld Verplicht Typ Beschrijving
name Verplicht Snaar / Touwtje De alias voor de meting.
expr Verplicht Snaar / Touwtje Een statistische SQL-expressie die statistische SQL-functies bevat.
comment Optioneel Snaar / Touwtje Beschrijving van de meting. Wordt weergegeven in Unity Catalog en documentatiehulpprogramma's.
display_name Optioneel Snaar / Touwtje Label dat door mensen kan worden gelezen, wordt weergegeven in hulpmiddelen voor visualisaties. Beperkt tot 255 tekens. Vereist YAML-specificatie 1.1. Bekijk de beschikbaarheid van functies in de metrische weergave.
format Optioneel Kaart Indelingsspecificatie voor hoe waarden moeten worden weergegeven. Vereist YAML-specificatie 1.1. Zie Indelingsspecificaties.
synonyms Optioneel Array Alternatieve namen voor LLM-hulpprogramma's om de meting te detecteren. Maximaal 10 synoniemen, elk beperkt tot 255 tekens. Vereist YAML-specificatie 1.1. Bekijk de beschikbaarheid van functies in de metrische weergave.
window Optioneel Array Vensterspecificaties voor gevensterde, cumulatieve of semi-aangrenzende aggregaties. Wanneer deze niet is opgegeven, gedraagt de meting zich als een standaardaggregaties. Zie Venstermetingen.

Zie Statistische functies voor een lijst met statistische functies.

Voorbeeld:

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']

Venstermetingen

Belangrijk

Deze functie is experimenteel.

Het window veld definieert gevensterde, cumulatieve of semi-aangrenzende aggregaties voor metingen. Zie Venstermetingen voor gedetailleerde informatie over venstermetingen en gebruiksvoorbeelden.

Elke vensterspecificatie bevat de volgende velden:

Veld Verplicht Typ Beschrijving
order Verplicht Snaar / Touwtje De dimensie die de volgorde van het venster bepaalt.
range Verplicht Snaar / Touwtje De omvang van het venster. Ondersteunde waarden:
  • current: Rijen waarin de volgordewaarde van het venster gelijk is aan de waarde van de huidige rij.
  • cumulative: Alle rijen waarin de volgordewaarde van het venster kleiner is dan of gelijk is aan de waarde van de huidige rij.
  • trailing <value> <unit>: Rijen van de huidige rij die achteruitgaan door de opgegeven tijdseenheden (bijvoorbeeld trailing 7 day). Bevat de huidige eenheid niet.
  • leading <value> <unit>: Rijen uit de huidige rij die vooruitgaan door de opgegeven tijdseenheden (bijvoorbeeld leading 3 month). Bevat de huidige eenheid niet.
  • all: Alle rijen, ongeacht de volgordewaarde van het venster.
semiadditive Verplicht Snaar / Touwtje Aggregatiemethode. Ondersteunde waarden: first of last.

Voorbeeld van venstermeting

In het volgende voorbeeld wordt een doorlopend aantal unieke klanten van zeven dagen berekend:

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

Materialisatie

Belangrijk

Deze functie is experimenteel.

Het materialization veld configureert automatische queryversnelling met behulp van gerealiseerde weergaven. Zie Materialisatie voor metrische weergaven voor gedetailleerde informatie over hoe materialisatie werkt, vereisten en best practices.

Het materialization veld bevat de volgende velden op het hoogste niveau:

Veld Verplicht Typ Beschrijving
schedule Verplicht Snaar / Touwtje Vernieuwingsschema. Gebruikt dezelfde syntaxis als de planningscomponent voor gerealiseerde weergaven. De TRIGGER ON UPDATE component wordt niet ondersteund.
mode Verplicht Snaar / Touwtje Moet worden ingesteld op relaxed.
materialized_views Verplicht Array Lijst met gerealiseerde weergaven om te materialiseren. Voor elke vermelding zijn de hieronder beschreven velden vereist.

Elke vermelding bevat materialized_views de volgende velden:

Veld Verplicht Typ Beschrijving
name Verplicht Snaar / Touwtje De naam van de materialisatie.
type Verplicht Snaar / Touwtje Type materialisatie. Ondersteunde waarden: aggregated (vereist dimensions, measuresof beide) of unaggregated.
dimensions Conditional Array Lijst met dimensienamen die moeten worden gerealiseerd. Vereist als type dat het is aggregated en er geen measures zijn opgegeven.
measures Conditional Array Lijst met metingsnamen die moeten worden gerealiseerd. Vereist als type dat het is aggregated en er geen dimensions zijn opgegeven.

Voorbeeld van materialisatie

In het volgende voorbeeld wordt een metrische weergave met meerdere materialisaties gedefinieerd:

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

Kolomnaamverwijzingen

Wanneer u verwijst naar kolomnamen die spaties of speciale tekens in YAML-expressies bevatten, plaatst u de kolomnaam in backticks om te ontsnappen aan de spatie of het teken. Als de expressie begint met een backtick en rechtstreeks als YAML-waarde wordt gebruikt, plaatst u de hele expressie tussen dubbele aanhalingstekens. Geldige YAML-waarden kunnen niet beginnen met een backtick.

Voorbeelden van opmaak

Gebruik de volgende voorbeelden voor meer informatie over het correct opmaken van YAML in veelvoorkomende scenario's.

Verwijzen naar een kolomnaam

In de volgende tabel ziet u hoe u kolomnamen opmaken, afhankelijk van de tekens die ze bevatten.

Zaak Naam van de bronkolom(en) Referentie-expressie(s) Aantekeningen
Geen spaties revenue expr: "revenue"
expr: 'revenue'
expr: revenue
Gebruik dubbele aanhalingstekens, enkele aanhalingstekens of geen aanhalingstekens rond de kolomnaam.
Met spaties First Name expr: "`First Name`" Gebruik backticks om spaties te ontsnappen. Plaats de volledige expressie tussen dubbele aanhalingstekens.
Kolomnaam met spaties in een SQL-expressie First Name en Last Name expr: CONCAT(`First Name`, , `Last Name`) Als de uitdrukking niet met backticks begint, zijn dubbele aanhalingstekens niet nodig.
Aanhalingstekens worden opgenomen in de naam van de bronkolom "name" expr: '`"name"`' Gebruik backticks om de dubbele aanhalingstekens in de kolomnaam te escapen. Plaats die expressie tussen enkele aanhalingstekens in de YAML-definitie.

Expressies gebruiken met dubbele punten

Zaak Expression Aantekeningen
Expressies met dubbele punten expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END" De volledige expressie verpakken in dubbele aanhalingstekens voor de juiste interpretatie

Opmerking

YAML interpreteert niet-aanhalingstekens als scheidingstekens voor sleutelwaarden. Gebruik altijd dubbele aanhalingstekens rond expressies die dubbele punten bevatten.

Inspringing met meerdere regels

Zaak Expression Aantekeningen
Inspringing met meerdere regels expr: \|
CASE WHEN
revenue > 100 THEN 'High'
ELSE 'Low'
END
De expressie laten inspringen onder de eerste regel

Opmerking

Gebruik het | blok scalaire na expr: voor expressies met meerdere regels. Alle regels moeten ten minste twee spaties na de expr toets worden ingesprongen voor de juiste parsing.

Uw YAML upgraden naar 1.1

Voor het upgraden van een metrische weergave naar YAML-specificatieversie 1.1 is het belangrijk dat opmerkingen anders worden verwerkt dan in eerdere versies.

Typen opmerkingen

  • YAML-opmerkingen (#): inline- of regelopmerkingen die rechtstreeks in het YAML-bestand zijn geschreven met behulp van het #-symbool.
  • Opmerkingen bij Unity Catalog: Opmerkingen die zijn opgeslagen in Unity Catalog voor de metrische weergave of de bijbehorende kolommen (dimensies en metingen). Deze zijn gescheiden van YAML-opmerkingen.

Overwegingen bij de upgrade

Kies het upgradepad dat overeenkomt met de manier waarop u opmerkingen in de metrische weergave wilt verwerken. De volgende opties beschrijven de beschikbare benaderingen en bieden voorbeelden.

Optie 1: YAML-opmerkingen behouden met behulp van notebooks of de SQL-editor

Als uw metrische weergave YAML-opmerkingen (#) bevat die u wilt behouden, gebruikt u de volgende stappen:

  1. Gebruik de ALTER VIEW opdracht in een notebook of SQL-editor.
  2. Kopieer de oorspronkelijke YAML-definitie naar de $$..$$ sectie na AS. Wijzig de waarde van version in 1.1.
  3. Sla de metrische weergave op.
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)
$$

Waarschuwing

Het uitvoeren van ALTER VIEW verwijdert Unity Catalog-opmerkingen, tenzij ze expliciet worden opgenomen in de comment velden van de YAML-definitie. Zie Optie 2 als u opmerkingen wilt behouden die worden weergegeven in De Unity-catalogus.

Optie 2: Opmerkingen bij Unity Catalog behouden

Opmerking

De volgende richtlijnen zijn alleen van toepassing wanneer u de ALTER VIEW opdracht gebruikt in een notebook of SQL-editor. Als u de metrische weergave bijwerkt naar versie 1.1 met behulp van de GEBRUIKERSinterface van de YAML-editor, behoudt de GEBRUIKERSinterface van de YAML-editor automatisch de opmerkingen van uw Unity Catalog.

  1. Kopieer alle Unity Catalog-opmerkingen naar de juiste comment velden in uw YAML-definitie. Wijzig de waarde van version in 1.1.
  2. Sla de metrische weergave op.
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"
$$

Zie voor versiegeschiedenis van YAML-specificatie en minimale runtimevereisten voor elke functie de beschikbaarheid van metrische weergavefuncties.