Dela via


YAML-referens för måttvy

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 är 0.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 under source 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.pksource 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, WHEREoch 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.

Se measure mängdfunktion.

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)