Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Måttvydefinitioner använder YAML-standardsyntax för att deklarera källan, kopplingar, fält, mått, filter, fönstermått och materialisering. Följande avsnitt dokumenterar den fullständiga grammatiken för var och en.
Lägsta versionskrav för körning och YAML-specifikation för varje funktion finns i Tillgänglighet för måttvyfunktioner.
Mer information om YAML-specifikationer finns i dokumentationen för YAML Specification 1.2.2 .
Redigera YAML i redigeringsprogrammet för måttvyn
Du kan skriva och redigera YAML som beskrivs på den här sidan direkt i redigeringsprogrammet för måttvyn. Öppna en måttvy i Katalogutforskaren <> och klicka på knappen för att redigera definitionen. Om du vill generera YAML från en beskrivning av naturligt språk i stället öppnar du Genie Code från redigeraren. En fullständig genomgång av redigeraren finns i Skapa en måttvy.
YAML-fält på översta nivån
YAML-definitionen för en måttvy innehåller följande fält på den översta nivån:
| Fält | Type | Description |
|---|---|---|
version |
String | Required. Den version av YAML-specifikationen för måttvyn som definitionen använder, till exempel 1.1. Det här är versionen av specifikationsformatet, inte ett revisionsnummer som du tilldelar till din egen definition. Använd någon av de specifikationsversioner som stöds. Se YAML-specifikationsversioner. |
comment |
String | Optional. Beskrivning av vy över mätvärden. |
source |
String | Required. Källdata för måttvyn. Kan vara en tabellliknande Unity Catalog-tillgång, inklusive en måttvy eller en SQL-fråga. Se Källa. |
parameters |
Array | Optional. Namngivna värden som anropare skickar när de kör frågor mot måttvyn som en tabellvärdesfunktion. Se Parametrar. |
filter |
String | Optional. Ett booleskt SQL-uttryck som gäller för alla frågor. Se Filtrera. |
joins |
Array | Optional. Star schema och snowflake schema kopplingar. Se Kopplingar. |
fields |
Array | Villkorlig. Fältdefinitioner som namn, uttryck och valfria semantiska metadata. Krävs om inget measures anges. Se Fält. Nyckelordet dimensions accepteras som en synonym för bakåtkompatibilitet. |
measures |
Array | Villkorlig. Mät definitioner som namn, aggregeringsuttryck och valfria semantiska metadata. Krävs om inget fields anges. Se Mått. |
materialization |
Objekt | Optional. Konfiguration för att påskynda frågor med materialiserade vyer. Innehåller uppdateringsschema och materialiserade vydefinitioner. Se Materialisering. |
Källa
Fältet source anger datakällan för måttvyn. Källor som stöds är tabeller, vyer, måttvyer och SQL-frågor. Sammansättning gäller för olika måttvyer. När du använder en måttvy som källa kan du referera till dess fält och mått i den nya måttvyn. Se Komponerbarhet.
Tabellliknande tillgångskälla
Referera till en tabellliknande tillgång med dess tredelade namn:
source: catalog.schema.source_table
SQL-frågekälla
Om du vill använda en SQL-fråga skriver du frågetexten direkt i YAML:
source: SELECT * FROM samples.tpch.orders o
LEFT JOIN samples.tpch.customer c
ON o.o_custkey = c.c_custkey
Note
När du använder en SQL-fråga som källa med en JOIN sats anger du primär- och sekundärnyckelbegränsningar för underliggande tabeller och använder RELY alternativet för optimal frågeprestanda. Mer information finns i Deklarera primärnyckel, sekundärnyckel och unika begränsningar och Frågeoptimering med primärnyckel och unika begränsningar.
Parameterar
Blocket parameters definierar namngivna värden som anropare skickar när de kör frågor mot måttvyn som en tabellvärdesfunktion. Information om när och hur du använder parametrar, inklusive att köra frågor mot en parameteriserad måttvy, finns i Använda parametrar med måttvyer.
Varje parameterdefinition innehåller följande fält:
| Fält | Type | Description |
|---|---|---|
name |
String | Required. Parameternamnet. Referera till parametern med det här namnet i fält- och måttuttryck och skicka den som ett namngivet argument när du kör frågor mot måttvyn. |
data_type |
String | Required. SQL-datatypen för parametern, till exempel double, int, stringeller date. |
default |
Varierar | Optional. Värdet som används när en anropare inte skickar parametern. Standardvärdet måste vara gjutbart till , och det kan inte referera till data_typenågon annan parameter eller innehålla en underfråga. Om du anger ett standardvärde för en parameter måste varje parameter som följer den också ha ett standardvärde. |
I följande exempel definieras en discount parameter och den refereras till i ett måttuttryck:
version: 1.1
source: main.default.sales
parameters:
- name: discount
data_type: double
default: 0
fields:
- name: product
expr: product
measures:
- name: discountedSales
expr: SUM((1 - discount) * amount)
Filtrera
Ett filter i YAML-definitionen gäller för alla frågor som refererar till måttvyn. Skriv filter som booleska SQL-uttryck.
# 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'
Joins
Kopplingar i måttvyer stöder både direktkopplingar från en faktatabell till dimensionstabeller (stjärnschema) och flerhoppskopplingar mellan normaliserade dimensionstabeller (snowflake-scheman). Du kan också ansluta till en SQL-fråga med hjälp av en SELECT -instruktion. Se Använda en SQL-fråga som källa.
Note
Anslutna tabeller kan inte innehålla MAP typkolumner. Information om hur du packar upp värden från MAP typkolumner finns i Explodera kapslade element från en karta eller matris.
Varje kopplingsdefinition innehåller följande fält:
| Fält | Type | Description |
|---|---|---|
name |
String | Required. Alias för den anslutna tabellen eller SQL-frågan. Använd det här aliaset när du refererar till kolumner från den anslutna tabellen i fält eller mått. |
source |
String | Required. Tredelade namn på den tabell som ska kopplas. Kan också vara en SQL-fråga. |
on |
String | Villkorlig. Booleskt uttryck som definierar kopplingsvillkoret. Krävs om using inte har angetts. |
using |
Array | Villkorlig. Lista över kolumnnamn som finns i både den överordnade tabellen och den anslutna tabellen. Krävs om on inte har angetts. |
cardinality |
String | Optional. Standardinställningen är many_to_one. Relationen mellan källan och den anslutna tabellen. Ange till för att one_to_many aggregera en tabell som har flera matchande rader per källrad som en separat faktakälla. Se En-till-många-kopplingar. |
joins |
Array | Optional. En lista över kapslade kopplingsdefinitioner för snowflake-schemamodellering. Se Tillgänglighet för måttvyfunktioner för lägsta körningskrav. |
rely |
Mappa | Optional. Lovar om kopplingen som analysatorn kan förlita sig på för att skapa effektivare frågeplaner. Se Optimera kopplingar med rely. |
Star-schemakopplingar
I ett stjärnschema är source faktatabellen, som kopplas till en eller flera dimensionstabeller med hjälp av en LEFT OUTER JOIN. Måttvyer kopplar ihop de fakta- och dimensionstabeller som behövs för den specifika frågan, baserat på de valda kolumnerna.
Ange kopplingskolumner med antingen en ON sats eller en USING sats:
-
ONsats: Använder ett booleskt uttryck för att definiera kopplingsvillkoret. -
USINGsats: Visar kolumner med samma namn i både den överordnade tabellen och den anslutna tabellen.
Kopplingen måste följa en många-till-en-relation. I fall av många-till-många väljs den första matchande raden från den anslutna dimensionstabellen.
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
fields:
- 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)
Note
Namnområdet source refererar till kolumner från måttvyns källa, medan en koppling name refererar till kolumner från den anslutna tabellen. I refererar till exempel source.l_orderkey = orders.o_orderkeysource till lineitem och orders refererar till den anslutna tabellen. Om inget prefix anges i en on -sats är referensen standard för den anslutna tabellen.
Snowflake-schemaanslutningar
Ett snowflake-schema utökar ett star-schema genom att normalisera dimensionstabeller och ansluta dem till underdimensioner. Detta skapar en kopplingsstruktur på flera nivåer. Se Tillgänglighet för måttvyfunktioner för lägsta körningskrav.
Om du vill definiera ett snowflake-schema kapslas joins du i en överordnad kopplingsdefinition:
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
fields:
- name: customer_nation
expr: customer.nation.n_name
En-till-många-kopplingar
Fältet cardinality anger relationen mellan källan och en ansluten tabell. Standardvärdet, many_to_one, behandlar den anslutna tabellen som en dimensionssökning. Ange cardinality: one_to_many för att behandla den anslutna tabellen som en faktakälla som motorn aggregerar oberoende av vid källintervallet, vilket gör att en enda källrad matchar flera rader i den anslutna tabellen. En-till-många-kopplingar kräver Databricks Runtime 18.1 eller senare och YAML-specifikation version 1.1. Se Tillgänglighet för måttvyfunktioner.
Följande regler gäller för en-till-många-kopplingar:
- En en-till-många-kolumn kan inte användas i en
fieldsdefinition, eftersom ett fält måste matcha till ett enda värde per källrad. - En enskild aggregeringsfunktion måste referera till kolumner från en källa. Du kan använda aritmetik i resultatet av separata aggregeringar, till exempel
count(orders.order_id) / count(*). - Alla underordnade till en en-till-många-koppling måste också vara
one_to_many. Syskonkopplingar på toppnivå kan blanda kardinaliteter. - Referera till en kolumn i en kapslad koppling med dess fullständiga punktsökväg genom kopplingsnamnen, till exempel
orders.order_items.item_id.
Note
När en måttvy använder en one_to_many koppling kvalificerar sig dess materialiseringar endast för exakt matchning. Sammanslagningsmatchning är inte tillgängligt. Se Sammanslagningsmatchning.
Följande exempel ansluter orders till en customers källa med cardinality: one_to_many så att ordermått aggregeras utan att duplicera kundrader:
version: 1.1
source: main.sales.customers
joins:
- name: orders
source: main.sales.orders
on: orders.customer_id = source.customer_id
cardinality: one_to_many
fields:
- name: customer_name
expr: customer_name
measures:
- name: customer_count
expr: count(*)
- name: order_count
expr: count(orders.order_id)
- name: total_order_revenue
expr: sum(orders.amount)
Konceptuell information och kapslade och syskonkopplingsexempel finns i Koppla kardinalitet.
Optimera kopplingar med rely
Använd fältet rely på en koppling för att deklarera garantier om relationen som frågeanalysatorn använder vid planering av frågor. Dessa garantier gör det möjligt för motorn att planera frågor mer effektivt och minska genomsökt data, särskilt när fält från den anslutna tabellen refereras i filter.
Kartan rely stöder följande fält:
| Fält | Type | Description |
|---|---|---|
at_most_one_match |
Boolean | Optional. Standardinställningen är false. När truedeklarerar , att högst en rad i den anslutna tabellen matchar varje rad i källan (en många-till-en-relation som inte fläktar ut). |
Varning
Ange at_most_one_match: true endast när kopplingen är många-till-en. Den här relationen verifieras inte vid körning. Om flera rader i den anslutna tabellen matchar en enda källrad returnerar mått (till exempel SUM och COUNT) felaktiga resultat.
I följande exempel aktiveras at_most_one_match en många-till-en-koppling från orders till customer. Frågor som filtrerar eller grupperar efter kundattribut har störst fördelar:
version: 1.1
source: samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
on: source.o_custkey = customer.c_custkey
rely:
at_most_one_match: true
fields:
- name: Customer name
expr: customer.c_name
- name: Customer market segment
expr: customer.c_mktsegment
measures:
- name: Total revenue
expr: SUM(o_totalprice)
Fält
Note
fields och dimensions är motsvarande nyckelord i en måttvydefinition.
fields är den föredragna termen och används i hela den här dokumentationen. Katalogutforskaren med låg kod etiketterar dessa kolumner Fält, men den YAML som genereras använder nyckelordet dimensions . Befintliga måttvyer som använder dimensions fortsätter att fungera och båda nyckelorden accepteras för nya eller uppdaterade definitioner.
Fält är måttvykolumner som används i SELECT, WHEREoch GROUP BY -satser vid frågetillfället. Varje uttryck måste returnera ett skalärt värde. Fält kan referera till kolumner från källdata eller tidigare definierade fält i måttvyn.
Ett fält kan vara antingen:
- En kategorisk kolumn eller grupperingskolumn, till exempel en region, status eller avdelning.
- En oaggregerad numerisk kolumn, till exempel en ålder, ett pris eller en kvantitet. Numeriska fält kan aggregeras vid frågetillfället med hjälp av SQL-funktioner som
SUMellerAVG.
Varje fältdefinition innehåller följande egenskaper:
| Property | Type | Description |
|---|---|---|
name |
String | Krävs för explicita kolumnuttryck. Kolumnaliaset för fältet. Utelämna det för jokerteckenuttryck, där Azure Databricks härleder namn från källan. Se Massimportfält och mått med jokertecken. |
expr |
String | Required. Ett SQL-uttryck som kan referera till kolumner från källdata eller ett tidigare definierat fält. Kan vara ett jokertecken för att importera alla kolumner från källan eller en ansluten tabell. Se Massimportfält och mått med jokertecken. |
comment |
String | Optional. Beskrivning av fältet. Visas i Unity Catalog och dokumentationsverktyg. |
display_name |
String | Optional. Etikett som visas i visualiseringsverktyg. Begränsad till 255 tecken. Kräver YAML-specifikation 1.1. Se Tillgänglighet för måttvyfunktioner. |
format |
Mappa | Optional. Formatspecifikation för hur värden visas. Kräver YAML-specifikation 1.1. Se Formatspecifikationer. |
synonyms |
Array | Optional. Alternativa namn för AI- och BI-verktyg för att identifiera fältet. Upp till 10 synonymer, var och en begränsad till 255 tecken. Kräver YAML-specifikation 1.1. Se Synonymer. |
Varning
Strängliknande måttvyfält är alltid STRING, även när källkolumnen är CHAR eller VARCHAR. Eftersom CHAR(n) utfyllnad av utrymme går förlorad kan jämförelser returnera olika resultat. Matchar till exempel column = 'COLLEGE' ett CHAR(10) värde i källtabellen (som är blankstegsfyllt) men inte i måttvyfältet.
Example:
fields:
# Basic field
- name: order_date
expr: o_orderdate
comment: 'Date the order was placed'
display_name: 'Order Date'
# Field with SQL expression
- name: order_month
expr: DATE_TRUNC('MONTH', o_orderdate)
display_name: 'Order Month'
# Field 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']
Åtgärder
Mått är uttryck som ger resultat utan en fördefinierad aggregeringsnivå. De måste uttryckas med hjälp av aggregerade funktioner. Om du vill referera till ett mått i en fråga använder du MEASURE funktionen. Mått kan referera till baskolumner i källdata, tidigare definierade fält eller tidigare definierade mått.
Varje måttdefinition innehåller följande fält:
| Fält | Type | Description |
|---|---|---|
name |
String | Krävs för explicita måttuttryck. Aliaset för måttet. Utelämna det för jokerteckenuttryck, där Azure Databricks härleder namn från källan. Se Massimportfält och mått med jokertecken. |
expr |
String | Required. Ett SQL-uttryck som innehåller en eller flera mängdfunktioner. Kan vara ett jokertecken för att importera alla mått från en måttvykälla. Se Massimportfält och mått med jokertecken. |
comment |
String | Optional. Beskrivning av åtgärden. Visas i Unity Catalog och dokumentationsverktyg. |
display_name |
String | Optional. Etikett som visas i visualiseringsverktyg. Begränsad till 255 tecken. Kräver YAML-specifikation 1.1. Se Tillgänglighet för måttvyfunktioner. |
format |
Mappa | Optional. Formatspecifikation för hur värden visas. Kräver YAML-specifikation 1.1. Se Formatspecifikationer. |
synonyms |
Array | Optional. Alternativa namn för AI- och BI-verktyg för att identifiera måttet. Upp till 10 synonymer, var och en begränsad till 255 tecken. Kräver YAML-specifikation 1.1. Se Tillgänglighet för måttvyfunktioner. |
window |
Array | Optional. Fönsterspecifikationer för fönster, kumulativa eller halvaddiiva aggregeringar. När det inte anges fungerar måttet som en standardaggregering. Se Fönstermått. |
Se Mängdfunktioner för en lista över aggregerade funktioner.
Example:
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']
Massimportera fält och mått med jokertecken
Gäller för: Databricks Runtime 18.2 och senare med YAML-specifikation 1.1
I en fields eller measures -definition kan du använda ett jokertecken (*) i expr fältet för att importera alla kolumner från källan eller en ansluten tabell utan att visa var och en. Det här är användbart när du vill att en måttvy ska exponera varje kolumn från en överordnad tillgång, ungefär som SELECT * i en standardvy. Azure Databricks expanderar jokertecknet till konkreta kolumner när du skapar eller ersätter måttvyn och härleder varje kolumnnamn från källkolumnnamnet.
Precis som explicita kolumndefinitioner expanderas jokerteckenuttryck när du skapar måttvyn. Om du vill hämta kolumner som lagts till i källan senare återskapar du måttvyn med CREATE OR REPLACE eller ALTER.
Jokertecken stöder följande formulär:
| Syntax | Description |
|---|---|
source.* |
Importera alla kolumner från måttvykällan. |
<join>.* |
Importera alla kolumner från en ansluten tabell som refereras till med dess kopplingsnamn. Kapslade kopplingar använder den fullständiga punktsökvägen, till exempel customer.nation.*. |
<target>.* EXCEPT (col1, col2, ...) |
Importera alla kolumner från målet utom de som anges. |
<target>.<struct>.* |
Expandera fälten i en STRUCT kolumn till separata kolumner. |
Följande regler gäller för jokerteckenuttryck:
- Utelämna fältet
name. Azure Databricks härleder kolumnnamn från källan, sånametillåts inte i ett jokerteckenuttryck. - Semantiska metadata tillåts inte i ett jokerteckenuttryck. Ange inte
comment,display_name,formatellersynonymspå ett jokertecken. Om du vill lägga till metadata i en specifik kolumn exkluderar du det från jokertecknet medEXCEPToch definierar det explicit. - I en
measuresdefinition importerar ett jokertecken endast mått från en måttvykälla. Bastabeller har inga mått, så ett jokertecken expanderas till inga mått när källan är en bastabell. - Du kan inte referera till en jokerteckenimporterad kolumn med dess härledda namn i ett senare
fieldsuttryck ellermeasuresuttryck. Referera till källkolumnen med dess fullständiga sökväg i stället.
Lösa namnkollisioner
När du importerar kolumner från mer än en källa med ett jokertecken, kolliderar kolumner som delar ett namn (till exempel id eller date) och orsakar ett fel när du sparar definitionen. Lös en kollision genom att exkludera kolumnen från varje jokertecken med EXCEPToch definiera den explicit med ett unikt namn:
fields:
- expr: source.* EXCEPT (id)
- expr: customer.* EXCEPT (id)
- name: source_id
expr: source.id
- name: customer_id
expr: customer.id
Jokerteckenexempel
Följande definition importerar alla kolumner från källan och från en ansluten tabell, exkluderar två kolumner och definierar en kolumn explicit för att lägga till metadata:
version: 1.1
source: samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
on: source.o_custkey = customer.c_custkey
joins:
- name: nation
source: samples.tpch.nation
on: customer.c_nationkey = nation.n_nationkey
fields:
# Import all columns from the source
- expr: source.*
# Import all columns from a joined table, excluding two
- expr: customer.nation.* EXCEPT (n_name, n_comment)
# Define a specific column explicitly to add metadata
- name: nation_name
expr: customer.nation.n_name
comment: "Customer's nation"
display_name: 'Nation Name'
Fönstermått
Fältet window definierar fönster, kumulativa eller halvaddiiva aggregeringar för mått. Detaljerad information om fönstermått och användningsfall finns i Fönstermått.
Varje fönsterspecifikation innehåller följande fält:
| Fält | Type | Description |
|---|---|---|
order |
String | Required. Fältet som avgör ordningen på fönstret. (1) |
range |
String | Required. Fönstrets omfattning. Se Värden som stödsrange. Det numeriska värdet i ett trailing eller leading intervall kan vara en heltalsparameter istället för en literal, så en anropare skickar in fönsterstorleken vid frågetillfället. Se Pass a window size som parameter. |
semiadditive |
String | Required. Sammansättningsmetod. Värden som stöds: first eller last. |
offset |
String | Optional. Kräver Databricks Runtime 18.1 och YAML-specifikation version 1.1 eller senare. Flyttar fönsterramen bakåt eller framåt längs fältet order med ett fast intervall. Värdet är av formuläret <n> <period>, där n är ett signerat heltal (negativt ser bakåt, positivt ser framåt) och period är ett av day, days, month, months, yeareller years. Exempel: -12 month, 1 year, -3 days, 7 day. Fältet order måste vara en datum- eller tidsstämpelkolumn.
offset har ingen effekt på range: all. Om den förskjutna ramen hamnar utanför tillgängliga data utvärderas måttet till NULL. Det signerade heltalet kan vara en heltalsparameter istället för en literal, så en anropare skickar in offsetet vid frågetillfället. Tecknet måste vara en del av parameterns värde, inte skrivas före parameternamnet. Se Pass a window size som parameter. För användning och arbetade exempel, se Hur offset skiftar fönsterramen. |
(1) Det refererade fältet måste vara deterministiskt. Icke-deterministiska uttryck som rand(), uuid()eller current_timestamp() skapar oförutsägbar fönsterordning och kan leda till felaktiga aggregeringsresultat.
range värden som stöds
-
current: Rader där fönsterordningsvärdet är lika med ankarradens värde. -
cumulative: Alla rader där fönsterordningsvärdet är mindre än eller lika med ankarradens värde. -
trailing <value> <unit> [inclusive | exclusive]: Rader från fästpunktsraden som går bakåt med angivna tidsenheter, till exempeltrailing 7 day. Den valfriainclusiveellerexclusivemodifieraren kräver Databricks Runtime 18.1 och YAML-specifikation version 1.1 eller senare, och styr om fästpunktsraden ingår i fönstret. Standardvärdet ärexclusive. Se Inkludera eller exkludera fästpunktsraden. -
leading <value> <unit> [inclusive | exclusive]: Rader från fästpunktsraden framöver med angivna tidsenheter, till exempelleading 3 month. Den valfriainclusiveellerexclusivemodifieraren kräver Databricks Runtime 18.1 och YAML-specifikation version 1.1 eller senare, och styr om fästpunktsraden ingår i fönstret. Standardvärdet ärexclusive. Se Inkludera eller exkludera fästpunktsraden. -
all: Alla rader oavsett fönsterordningsvärdet.
Exempel på fönstermått
I följande exempel beräknas ett rullande 7-dagars antal unika kunder:
version: 1.1
source: samples.tpch.orders
fields:
- 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
Skicka en fönsterstorlek som parameter
Istället för att hårdkoda det numeriska värdet i ett trailing eller eller leadingrange i ett offset, kan du referera till en parameter, så att en anropare skickar in fönsterstorleken när de frågar i metrikvyn. Detta kräver ett SQL-lager eller annan beräkningsresurs som kör Databricks Runtime 18.2 eller högre.
Följande regler gäller för en parameter som används som fönsterstorlek:
- Parametrarna
data_typemåste vara integrala, såsomint,smallint, ellerbigint. - Värdet måste vara ett rent parameternamn, inte ett uttryck. Använd till exempel
trailing window_size day, intetrailing window_size + 1 day. Du kan inte heller skriva ett tecken före parameternamnet, till exempel-window_sizei enoffset. För att passera en negativ offset, placera tecknet inuti parameterns värde. - Parametern kan inte namnges efter ett fönsternyckelord, såsom en intervalltyp (
trailing, ,leading), en punkt (day,month, ),yearett inkluderingsnyckelord (inclusive,exclusive), elleroffset. - Enheten förblir bokstavlig. Du kan parametrisera endast den numeriska magnituden, inte perioden.
Följande exempel definierar en window_size parameter och refererar till den i ett trailing intervall, så varje anropare väljer antalet dagar i det rullande fönstret:
version: 1.1
source: samples.tpch.orders
parameters:
- name: window_size
data_type: int
default: 7
fields:
- name: order_date
expr: o_orderdate
measures:
- name: rolling_customers
expr: COUNT(DISTINCT o_custkey)
display_name: 'Rolling Customers'
window:
- order: order_date
range: trailing window_size day
semiadditive: last
För att fråga en metrikvy som definierar parametrar, se Fråga en metrikvy med parametrar.
Materialisering
Fältet materialization konfigurerar automatisk frågeacceleration med materialiserade vyer. Detaljerad information om hur materialisering fungerar, krav och metodtips finns i Materialisering för måttvyer.
Note
Du kan inte materialisera en måttvy som definierar parametrar.
Fältet materialization innehåller följande fält på den översta nivån:
| Fält | Type | Description |
|---|---|---|
schedule |
String | Optional. Uppdateringsschema. Använder samma syntax som schemasatsen för materialiserade vyer. Om materialiseringar utelämnas uppdateras de endast manuellt. Information om hur du utlöser en manuell uppdatering finns i Manuell uppdatering. Satsen TRIGGER ON UPDATE stöds inte. |
mode |
String | Required. Måste anges till relaxed. |
materialized_views |
Array | Required. Lista över materialiserade vyer som ska materialiseras. Varje post kräver de fält som beskrivs nedan. |
Varje post i materialized_views innehåller följande fält:
| Fält | Type | Description |
|---|---|---|
name |
String | Required. Namnet på materialiseringen. |
type |
String | Required. Typ av materialisering. Värden som stöds: aggregated (kräver dimensions, measureseller båda) eller unaggregated. Endast en unaggregated post tillåts per måttvy. Oaggregerade poster använder inte fälten dimensions eller measures . |
dimensions |
Array | Villkorlig. Lista över fältnamn som ska materialiseras med nyckelordet dimensions även om din toppnivådefinition använder fields. Krävs om type är aggregated och nej measures har angetts. |
measures |
Array | Villkorlig. Lista över måttnamn som ska materialiseras. Krävs om type är aggregated och nej dimensions har angetts. |
cluster_by |
Objekt | Optional. Klustring av kolumner för materialiseringen, motsvarande -satsen iCLUSTER BY en materialiserad vy. Ange cols med en lista med kolumnnamn eller ange auto: true så att Databricks väljer klustringskolumnerna automatiskt. |
partition_by |
Array | Optional. Lista över kolumner som materialiseringen ska partitioneras med, vilket motsvarar -satsen iPARTITION BY en materialiserad vy. |
Note
Materialiseringsblocket använder nyckelordet dimensions: i stället för fields:. Använd dimensions: när du visar fält för materialisering, även om din toppnivådefinition använder fields:.
Materialiseringsexempel
I följande exempel definieras en måttvy med flera materialiseringar:
version: 1.1
source: prod.operations.orders_enriched_view
filter: revenue > 0
# filter, fields, and measures can't use invoker-dependent expressions: no current_user(), is_member(), etc.
# source can't have RLS, column masking, or ABAC policies
joins:
- name: customers
source: prod.operations.customers
on: source.customer_id = customers.id
# if one-to-many, all materializations below drop to exact match only
fields:
- name: category
expr: substring(category, 5)
- name: order_date
expr: order_date
measures:
- name: total_revenue
expr: SUM(revenue)
- name: number_of_suppliers
expr: COUNT(DISTINCT supplier_id)
- name: revenue_for_open_orders
expr: SUM(revenue) FILTER (WHERE status = 'O')
- name: blended_margin
expr: SUM(revenue) - SUM(cost)
- name: rolling_7day_customers
expr: COUNT(DISTINCT customer_id)
window:
- order: order_date
range: trailing 7 day
semiadditive: last
materialization:
schedule: every 6 hours
mode: relaxed
materialized_views:
- name: baseline
type: unaggregated
# only one allowed per metric view; doesn't use dimensions or measures keys
# no benefit if source is an unfiltered direct table reference
- name: daily_status_metrics
type: aggregated
dimensions:
- order_date
- category # avoid overly granular dimensions, such as millisecond timestamps
measures:
- total_revenue # rollup-eligible
- number_of_suppliers # exact match only (non-additive)
- revenue_for_open_orders # rollup-eligible (deterministic filter)
- blended_margin # exact match only (multiple aggregates)
- rolling_7day_customers # exact match only (window measure)
cluster_by:
cols:
- order_date
- category
partition_by:
- order_date
Referenser till kolumnnamn
När du refererar till kolumnnamn som innehåller blanksteg eller specialtecken i YAML-uttryck omger du kolumnnamnet i backticks. Om uttrycket börjar med en backtick och används direkt som ett YAML-värde omsluter du hela uttrycket med dubbla citattecken. Giltiga YAML-värden kan inte börja med en backtick.
Formateringsexempel
Använd följande exempel för att lära dig hur du formaterar YAML korrekt i vanliga scenarier.
Referera till ett kolumnnamn
I följande exempel visas hur du formaterar kolumnreferenser beroende på vilka tecken de innehåller.
Inga blanksteg
Källkolumn: revenue
expr: "revenue"
expr: 'revenue'
expr: revenue
Använd dubbla citattecken, enkla citattecken eller inga citattecken runt kolumnnamnet.
Kolumnnamn med blanksteg
Källkolumn: `First Name`
expr: '`First Name`'
Använd backticks för att undkomma mellanslag. Omslut hela uttrycket med dubbla citattecken.
Kolumnnamn med blanksteg i ett SQL-uttryck
Källkolumner: `First Name`, `Last Name`
expr: CONCAT(`First Name`, ' ', `Last Name`)
Om uttrycket inte börjar med en backtick krävs inte dubbla citattecken.
Kolumnnamn som innehåller citattecken
Källkolumn: "name"
expr: '`"name"`'
Använd backticks för att undvika de dubbla citattecknarna i kolumnnamnet. Omslut uttrycket med enkla citattecken.
Uttryck med kolon
expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END"
Note
YAML tolkar ociterade kolon som nyckel/värde-avgränsare. Använd alltid dubbla citattecken kring uttryck som innehåller kolon.
Flerradsuttryck
expr: |
CASE WHEN
revenue > 100 THEN 'High'
ELSE 'Low'
END
Note
| Använd blockskalaren efter expr: för flerradsuttryck. Alla rader måste vara indragna minst två blanksteg efter expr nyckeln för korrekt tolkning.
Uppgradera till YAML 1.1
Uppgradering av en måttvy till YAML-specifikation version 1.1 kräver försiktighet, eftersom kommentarer hanteras på ett annat sätt än i tidigare versioner.
Typer av kommentarer
-
YAML-kommentarer (
#): Infogade eller enradskommentarer som skrivits direkt i YAML-filen. - Unity Catalog-kommentarer: Kommentarer som lagras i Unity Catalog för måttvyn eller dess kolumner. Dessa är separata från YAML-kommentarer.
Uppgraderingsöverväganden
Välj den uppgraderingssökväg som matchar hur du vill hantera kommentarer i din måttvy.
Alternativ 1: Bevara YAML-kommentarer med hjälp av notebook-filer eller SQL-redigeraren
Om din måttvy innehåller YAML-kommentarer (#) som du vill behålla använder du följande steg:
-
ALTER VIEWAnvänd kommandot i en notebook- eller SQL-redigerare. - Kopiera den ursprungliga YAML-definitionen till avsnittet
$$..$$efterAS. Ändra värdet påversiontill1.1. - Spara måttvyn.
ALTER VIEW metric_view_name AS
$$
# The notebook preserves inline comments
version: 1.1
source: samples.tpch.orders
fields:
- 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)
$$
Varning
Om du kör ALTER VIEW tas Unity Catalog-kommentarer bort om de inte uttryckligen ingår i fälten comment i YAML-definitionen. Information om hur du bevarar kommentarer som visas i Unity Catalog finns i Alternativ 2.
Alternativ 2: Bevara kommentarer i Unity-katalogen
Note
Följande vägledning gäller endast när du använder ALTER VIEW kommandot i en notebook- eller SQL-redigerare. Om du uppgraderar din måttvy till version 1.1 med yaml-redigerarens användargränssnitt bevarar YAML-redigerargränssnittet automatiskt dina kommentarer i Unity Catalog.
- Kopiera alla Unity Catalog-kommentarer till lämpliga
commentfält i YAML-definitionen. Ändra värdet påversiontill1.1. - Spara måttvyn.
ALTER VIEW metric_view_name AS
$$
version: 1.1
source: samples.tpch.orders
comment: "Metric view of order (Updated comment)"
fields:
- 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"
$$
För YAML-specifikationsversionshistorik och lägsta körningskrav för varje funktion, se Tillgänglighet för måttvyfunktioner.