Anteckning
Å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.
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Den här sidan beskriver varje komponent i YAML som används för att definiera en måttvy.
YAML-översikt
YAML-definitionen för en måttvy innehåller sex fält på den översta nivån:
-
version
: Standardvärdet är0.1
. Det här är versionen av specifikationen för den metriska vyn. -
source
: Källdata för måttvyn. Detta kan vara en tabellliknande tillgång eller en SQL-fråga. -
joins
: Valfritt. Används för att lämna JOIN faktatabellen som definierats undersource
med dimensionstabeller som en stjärnschemamodell. -
filter
: Valfritt. Ett booleskt SQL-uttryck som gäller för alla frågor.WHERE
motsvarar satsen. -
dimensions
: En matris med dimensionsdefinitioner, inklusive dimensionsnamnet och uttrycket. -
measures
: En matris med aggregerade uttryckskolumner.
Allmän notation
Måttvydefinitioner följer yaml-standardsyntaxen för notering. Mer information om YAML-specifikationer finns i yaml.orgs dokumentation .
När du refererar till kolumnnamn med blanksteg eller specialtecken i uttryck i en YAML-definition bör du tänka på följande:
Backtick-escaping: Omslut kolumnnamnet i backticks (`) för att säkerställa korrekt referens. Om du till exempel vill referera till en kolumn med ett blanksteg i namnet använder du
`column name`
.Backtick-escapeing omgiven av dubbla citattecken: Om uttrycket börjar med ett backtick-escape-kolumnnamn och måste ingå i en sträng i YAML, omsluter du hela uttrycket med dubbla citattecken för att vara YAML-kompatibelt. När du till exempel använder ett kolumnnamn med blanksteg kan hela uttrycket se ut som
"`column name`"
.
Källa
Du kan använda en tabellliknande tillgång eller en SQL-fråga som källa för din måttvy. Om du vill använda en tabellliknande tillgång måste du ha minst SELECT
behörighet för tillgången.
Använda en tabell som källa
Om du vill använda en tabell som källa tar du med det fullständigt kvalificerade tabellnamnet, som i följande exempel.
source: samples.tpch.orders
Använda en SQL-fråga som kä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
Anmärkning
När du använder en SQL-fråga som källa med en JOIN
-sats rekommenderar Databricks att du ställer in primära och sekundärnyckelbegränsningar för underliggande tabeller och använder RELY
alternativet för optimal prestanda vid frågetillfället, om tillämpligt. Mer information om hur du använder primär- och sekundärnyckelbegränsningar finns i Deklarera primärnyckel och sekundärnyckelrelationer och Frågeoptimering med primärnyckelbegränsningar.
Använda måttvyn som källa
Du kan också använda en befintlig måttvy som källa för en ny måttvy:
version: 0.1
source: views.examples.source_metric_view
dimensions:
# Dimension referencing dimension from source_metric_view
- name: Order date
expr: order_date_dim
measures:
# Measure referencing dimension from source_metric_view
- name: Latest order month
expr: MAX(order_date_dim_month)
# Measure referencing measure from source_metric_view
- name: Latest order year
expr: DATE_TRUNC('year', MEASURE(max_order_date_measure))
När du använder en måttvy som källa:
Dimensioner i den nya måttvyn kan referera till vilken dimension som helst i källmåttvyn.
Mått i den nya måttvyn kan referera till valfri dimension eller mått i källmåttvyn.
Alla andra skrivbarhetsregler gäller. Se Komponerbarhet.
Filtrera
Ett filter i YAML-definitionen för en måttvy gäller för alla frågor som refererar till den. Det måste skrivas som ett SQL-booleskt uttryck och motsvarar att använda en WHERE
sats i en SQL-fråga.
Ansluter sig
Kopplingar används för att modellera stjärnscheman, där källan behandlas som en faktatabell och kan kopplas till flera dimensionstabeller med hjälp av en LEFT OUTER JOIN
. Du kan ange kopplingskolumner med hjälp av en on
-sats eller en using
-sats. Med on
satsen kan du definiera kopplingsvillkoret med ett booleskt uttryck.
using
Satsen refererar till kolumner med samma namn i båda tabellerna.
Sammanfogningen bör följa en många-till-en-relation. I följande exempel visas hur du uttrycker en koppling i definitionen av en måttvy.
source: catalog.schema.fact_table
joins:
# The on clause supports a boolean expression
- name: dimension_table_1
source: catalog.schema.dimension_table_1
on: source.dimension_table_1_fk = dimension_table_1.pk
# The using clause supports an array of columns
# found in both of the tables being joined.
- name: dimension_table_2
source: catalog.schema.dimension_table_2
using:
- dimension_table_2_key_a
- dimension_table_2_key_b
dimensions:
# Dimension referencing a join column from dimension_table_1 using dot notation
- name: Dimension table 1 key
expr: dimension_table_1.pk
measures:
# Measure referencing a join column from dimension_table_1
- name: Count of dimension table 1 keys
expr: COUNT(dimension_table_1.pk)
Anmärkning
Namnområdet source
refererar till kolumner från måttvyns källa, medan kopplingen name
refererar till kolumner från den anslutna tabellen. I kopplingsvillkoret source.dimension_table_1_fk = dimension_table_1.pk
source
refererar till exempel till måttvyns källtabell (fact_table
) och dimension_table_1
refererar till den anslutna tabellen. Referensen går till kopplingstabellen som standard om inget prefix anges i en on
sats.
Mått
Dimensioner används i SELECT
, WHERE
och GROUP BY
-satser vid frågetillfället. Varje uttryck måste returnera ett skalärt värde. Varje dimension består av två komponenter:
name
: Aliaset för kolumnen.expr
: Ett SQL-uttryck på källdata som definierar dimensionen.
I följande exempel visas hur du definierar dimensioner:
dimensions:
# Column name
- name: Order date
expr: o_orderdate
# SQL expression
- name: Order month
expr: DATE_TRUNC('MONTH', `Order date`)
# Referring to a column with a space in the name
- name: Month of order
expr: `Order month`
# Multi-line expression
- name: Order status
expr: CASE
WHEN o_orderstatus = 'O' THEN 'Open'
WHEN o_orderstatus = 'P' THEN 'Processing'
WHEN o_orderstatus = 'F' THEN 'Fulfilled'
END
Åtgärder
Mått är en matris med aggregerade uttryck som definierar aggregerade resultat utan en fördefinierad aggregeringsnivå. De måste uttryckas som aggregerade funktioner. Om du vill referera till ett mått i en fråga måste du använda MEASURE
funktionen. Varje mått består av följande komponenter:
name
: Måttets alias.expr
: Ett aggregerat SQL-uttryck som kan innehålla SQL-mängdfunktioner.
Se Mängdfunktioner för en lista över aggregerade funktioner.
I följande exempel visas hur du definierar mått:
measures:
# Basic aggregation
- name: Total revenue
expr: SUM(o_totalprice)
# Basic aggregation with ratio
- name: Total revenue per customer
expr: SUM(`Total revenue`) / COUNT(DISTINCT o_custkey)
# Measure-level filter
- name: Total revenue for open orders
expr: COUNT(o_totalprice) FILTER (WHERE o_orderstatus='O')
# Measure-level filter with multiple aggregate functions
# filter needs to be specified for each aggregate function in the expression
- name: Total revenue per customer for open orders
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus='O')/COUNT(DISTINCT o_custkey) FILTER (WHERE o_orderstatus='O')
Fönstermått
Viktigt!
Den här funktionen är Experimentell.
Med fönstermått kan du definiera mått med fönster, kumulativa eller halvaddiiva aggregeringar i dina måttvyer. Dessa typer av mått möjliggör mer komplexa beräkningar, till exempel glidande medelvärden, period-över-period-ändringar och löpande summor. Se Använda fönstermått i måttvyer för exempel som visar hur du använder fönstermått i måttvyer.
Sammanställning
Måttvyer är komponerbara, vilket gör att du kan skapa komplex logik genom att referera till tidigare definierade element.
I en måttvydefinition:
- Dimensioner kan referera till dimensioner som tidigare definierats i YAML.
- Mått kan referera till alla dimensioner.
- Mått kan referera till mått som tidigare definierats med hjälp av
MEASURE()
funktionen.
I följande exempel visas hur dimensioner och mått kan sammansättas:
dimensions:
# Dimension referencing a source column
- name: Order month
expr: DATE_TRUNC('month', o_orderdate)
# Dimension referencing a previously defined dimension
- name: Previous order month
expr: ADD_MONTHS(`Order Month`, -1)
measures:
# Measure referencing a dimension
- name: Earliest order month
expr: MIN(`Order month`)
# Measure referencing a source column
- name: Revenue
expr: SUM(sales_amount)
# Measure referencing a source column
- name: Costs
expr: SUM(item_cost)
# Measure referencing previously defined measures
- name: Profit
expr: MEASURE(Revenue) - MEASURE(Costs)