Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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:
|
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:
- Gebruik de
ALTER VIEWopdracht in een notebook of SQL-editor. - Kopieer de oorspronkelijke YAML-definitie naar de
$$..$$sectie naAS. Wijzig de waarde vanversionin1.1. - 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.
- Kopieer alle Unity Catalog-opmerkingen naar de juiste
commentvelden in uw YAML-definitie. Wijzig de waarde vanversionin1.1. - 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.