Självstudie: Skapa en måttvy med kopplingar och datamodellering

I den här handledningen skapar du en mätvärdesvy för försäljningsanalys på datauppsättningen TPC-H. I slutet har du en metrikvy som:

  • Kopplar beställningar och kunder till flera tabeller med hjälp av ett snowflake-schema.
  • Definierar fält (kallas även dimensioner) för tids-, geografi- och orderattribut.
  • Beräknar enkla och komplexa mått, inklusive kvoter, filtrerade aggregeringar och fönstermått.
  • Använder komponerbarhet för att bygga komplexa mått från enklare mätvärden.
  • Definierar en parameter för att tillämpa en diskonteringsränta vid frågetillfället.
  • Innehåller agentmetadata för instrumentpaneler och AI-verktyg.

Om du är nybörjare på måttvyer börjar du med Skapa en måttvy för att lära dig grunderna. Den här handledningen utökar den grunden med reell komplexitet.

Requirements

Du behöver följande för att kunna slutföra den här självstudiekursen:

  • En arbetsyta aktiverad för Unity Catalog.
  • En SQL-lager- eller beräkningsresurs som kör Databricks Runtime 17.3 eller senare.

En fullständig lista över behörigheter som krävs för att skapa en måttvy finns i Krav.

Note

Du kan skapa en måttvy på Databricks Runtime 16.4 och senare. I den här självstudien används funktioner som kräver Databricks Runtime 17.3 eller högre, och vissa steg kräver en ännu senare Runtime-version. Information om den lägsta körtiden för varje funktion finns i Tillgänglighet för funktioner i måttvyn.

Datamodellen

TPC-H-datamängden modellerar en grossistleveranskedja. I den här handledningen används tre tabeller som är anslutna i ett snowflake-schema.

  • orders ansluter till customero_custkey = c_custkey
  • customer ansluter till nationc_nationkey = n_nationkey
Tabell Befattning Nyckelkolumner
orders Faktatabell (ordertransaktioner) o_orderkey, o_custkey, o_totalprice, , , o_orderdateo_orderstatus
customer Dimensionstabell (kundinformation) c_custkey, c_name, , c_mktsegmentc_nationkey
nation Dimensionstabell (lands- eller regionreferens) n_nationkey, , n_namen_regionkey

Steg 1: Skapa måttvyn och öppna redigeraren

Du kan skapa den här måttvyn i katalogutforskarens användargränssnitt, generera den med Genie Code eller skriva den fullständiga YAML-definitionen direkt. Alla tre metoderna resulterar i en enda YAML-definition som modellerar metrikvyn. I varje steg som följer väljer du fliken Katalogutforskarens användargränssnitt eller YAML-redigerare för att följa önskad metod. Om du använder YAML-redigeraren är exempelkoden i varje steg den del av YAML-definitionen som motsvarar det du skapar i det steget.

Note

YAML-exemplen i den här självstudiekursen använder nyckelordet fields. När du skapar en mätvärdesvy i low-code-redigeraren använder den YAML som genereras i stället det motsvarande nyckelordet dimensions. Se Fält.

Om du inte känner till användargränssnittet för att skapa måttvyer kan du läsa Skapa en måttvy.

Så här skapar du mätvyn i Katalogutforskaren:

  1. Sök efter samples.tpch.orders.
  2. Klicka på tabellnamnet.
  3. Klicka på Skapa>måttvy och ge vyn namnet.

Detaljerade steg för att skapa finns i Skapa en måttvy. När redigeraren öppnas använder du fliken Användargränssnitt för att skapa interaktivt eller klickar på <> knappen för att redigera YAML-definitionen direkt.

Steg 2: Konfigurera måttvyn

Ange en version och en beskrivning för måttvyn. version avgör versionen av YAML-specifikationen, och comment dokumenterar syftet med måttvyn, som visas i Catalog Explorer. Azure Databricks hanterar versionen åt dig.

Katalogutforskaren-användargränssnitt

Versionen har definierats åt dig. Så här lägger du till eller redigerar beskrivningen när du har sparat måttvyn:

  1. I Katalogutforskaren söker du efter måttvyn och klickar på dess namn.
  2. Klicka på Beskrivning och ange sedan en beskrivning av måttvyn. Du kan använda exempelbeskrivningen som visas på fliken YAML-redigerare .

Den här texten motsvarar fältet comment i YAML-definitionen. Fler sätt att redigera en måttvy finns i Redigera en måttvy.

YAML-redigerare

version: 1.1

comment: |-
  Sales analytics metric view for order performance analysis.
  Joins orders with customers and geography.
  Owner: Analytics Team
  Last updated: 2025-01-15

Steg 3: Definiera källan och kopplingarna

Definiera den primära källtabellen och kopplingsrelaterade tabeller:

  • source anger faktatabellen (order) som korn.
  • joins tar in kunddata med hjälp av en många-till-en-relation.
  • Den kapslade nation-joinen demonstrerar ett snowflake-schemamönster och går via customer för att nå geografiska data, där nation är en underdimension till kund.

Katalogutforskaren-användargränssnitt

Det här exemplet lägger till två sammanslagningar, båda av typen många-till-en, för att modellera snöflingeschemat.

Så här lägger du till customer kopplingen:

  1. I redigeraren klickar du på Anslut i det övre högra hörnet för att öppna dialogrutan Lägg till koppling .
  2. Sök efter samples.tpch.customer, klicka på tabellnamnet och klicka sedan på Lägg till.
  3. Ange kopplingsvillkoret till o_custkey = c_custkey.
  4. Under Anslut kardinalitet väljer du Många-till-en. Vägledning om hur du väljer kardinalitet finns i Anslut kardinalitet.

Lägg sedan till den kapslade nation kopplingen. Upprepa stegen från customer kopplingen och anslut samples.tpch.nationc_nationkey = n_nationkey. Att kapsla in sammanfogningen under customer modellerar nation som en underdimension av kund.

De fullständiga dialogrutorna för koppling finns i Steg 2: Lägg till en koppling.

YAML-redigerare

source: SELECT * FROM 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

Steg 4: Definiera ett filter

En filter begränsar källdata och gäller för alla frågor i måttvyn. Den här självstudien begränsar måttvyn till senaste data.

Katalogutforskaren-användargränssnitt

Så här definierar du filtret:

  1. I redigeraren klickar du på filterikonen.Filtrera i det övre högra hörnet.
  2. Använd de nedrullningsbara menyerna för att ange Kolumnen till o_orderdate, Operator till >=och Värdet till 1995-01-01.

Mer information om filter finns i Steg 3: Definiera ett filter.

YAML-redigerare

filter: o_orderdate >= '1995-01-01'

Steg 5: Definiera fält

Fält är attributen som användare grupperar och filtrerar efter. Ett fält kan vara en kategorisk kolumn (till exempel region eller status) eller en oaggregerad numerisk kolumn (till exempel ålder eller kvantitet) som användarna aggregerar vid frågetillfället.

Agentmetadata

Varje fält och mått i den här handledningen har egenskaper för agentmetadata som förbättrar hur din metrikvy fungerar med instrumentpaneler och AI-verktyg:

  • display_name: En läsbar etikett som visas i visualiseringar i stället för det tekniska kolumnnamnet.
  • synonyms: Alternativa namn som hjälper AI-verktyg som Genie att identifiera fält och mått via frågor på naturligt språk.
  • format: Hur värden visas på underordnade ytor, till exempel instrumentpaneler, notebook-filer och SQL-frågeresultat, till exempel valuta, tal eller procent.

De här egenskaperna är valfria men rekommenderas. Fält- och måttdefinitionerna i följande steg inkluderar dem direkt i texten.

Fältdefinitioner

Den här självstudiekursen lägger till:

  • Tidsfält:order_date, order_month, och order_year i flera detaljnivåer för att stödja olika analysbehov.
  • Transformerade fält:order_status och order_priority, som använder CASE och SPLIT konverterar källkoder till läsbara etiketter.
  • Kopplade fält:customer_name, market_segment, och customer_nation, som refererar till anslutna tabeller med kopplingsnamnet. Kapslade sammanslagningskolumner använder den kedjade punktnotationen, till exempel customer.nation.n_name, för att navigera i snowflake-schemat.

Katalogutforskaren-användargränssnitt

Redigeraren lägger automatiskt till alla källkolumner på fliken Fält . Redigera, byt namn på, ta bort och lägg till fält så att måttvyn definierar exakt följande. För varje fält klickar du på dess namn för att redigera det eller klickar på Lägg till eller plusikon läggtill för att skapa det och anger sedan uttrycket i Builder - eller Anpassat läge. Ange visningsnamn och synonymer för varje fält som det visas.

  1. order_date: Välj kolumnen i o_orderdate. Ange visningsnamn till Order Date.

  2. order_month: I anpassat läge anger du DATE_TRUNC('MONTH', order_date). Ange visningsnamn till Order Month.

  3. order_year: I anpassat läge anger du YEAR(order_date). Ange visningsnamn till Order Year.

  4. order_status: Ange följande uttryck i anpassat läge. Ange visningsnamn till Order Status och synonymer till status, fulfillment status.

    CASE o_orderstatus
      WHEN 'O' THEN 'Open'
      WHEN 'P' THEN 'Processing'
      WHEN 'F' THEN 'Fulfilled'
    END
    
  5. order_priority: I anpassat läge anger du SPLIT(o_orderpriority, '-')[0]. Ange visningsnamn till Priority.

  6. customer_name: I Builder-läge väljer du c_name kolumnen från den anslutna customer tabellen. Ange visningsnamn till Customer Name.

  7. market_segment: I Builder-läge väljer du c_mktsegment kolumnen från den anslutna customer tabellen. Ange visningsnamn till Market Segment och synonymer till segment, industry.

  8. customer_nation: I läget Anpassat anger du customer.nation.n_name för att hänvisa till den nästlade nation-sammanfogningen. Ange visningsnamn till Country och synonymer till nation, country.

De fullständiga fältstegen finns i Steg 4: Lägg till fält.

YAML-redigerare

fields:
  - name: order_date
    expr: o_orderdate
    display_name: Order Date

  - name: order_month
    expr: "DATE_TRUNC('MONTH', order_date)"
    display_name: Order Month

  - name: order_year
    expr: YEAR(order_date)
    display_name: Order Year

  - name: order_status
    expr: |-
      CASE o_orderstatus
        WHEN 'O' THEN 'Open'
        WHEN 'P' THEN 'Processing'
        WHEN 'F' THEN 'Fulfilled'
      END
    display_name: Order Status
    synonyms:
      - status
      - fulfillment status

  - name: order_priority
    expr: "SPLIT(o_orderpriority, '-')[0]"
    display_name: Priority

  - name: customer_name
    expr: customer.c_name
    display_name: Customer Name

  - name: market_segment
    expr: customer.c_mktsegment
    display_name: Market Segment
    synonyms:
      - segment
      - industry

  - name: customer_nation
    expr: customer.nation.n_name
    display_name: Country
    synonyms:
      - nation
      - country

Steg 6: Definiera parametrar

Med parametrar kan du skicka värden till måttvyn när du kör frågor mot den, så att en enskild definition kan hantera många frågevarianter. Den här självstudien lägger till en parameter discount som ett senare mått använder för att beräkna rabatterade intäkter. Parametern har standardvärdet 0, så frågor som inte skickar ett värde returnerar intäkter som inte har redovisats. Mer information om parametrar finns i Använda parametrar med måttvyer.

Katalogutforskaren-användargränssnitt

I redigeringsrubriken klickar du på Lägg till parameter. Ange discount som namn och ange sedan ett standardvärde för 0 och välj double datatyp.

YAML-redigerare

parameters:
  - name: discount
    data_type: double
    default: 0

Steg 7: Definiera mått

Måttvärden är de beräkningar som användarna vill analysera. Definiera atomiska mått först och använd sedan sammansättning för att skapa komplexa mått som refererar till tidigare definierade mått med MEASURE() funktionen. Ange display_name, format och synonyms för varje mätvärde enligt beskrivningen i Agentmetadata. Den här självstudiekursen lägger till:

  • Atomiska mått:order_count , total_revenueoch unique_customers, de enkla aggregeringar som utgör byggstenarna.
  • Sammansatta mått:avg_order_value och revenue_per_customer, som refererar till tidigare definierade mått med MEASURE() i stället för att duplicera aggregeringslogik. Om total_revenue ändras använder dessa åtgärder automatiskt den uppdaterade definitionen. Se Komponerbarhet.
  • Filtrerade mått:open_order_revenue och fulfilled_order_revenue, som används FILTER (WHERE ...) för att skapa villkorsstyrda mått utan separata fält.
  • Parameteriserat mått:discounted_revenue, som refererar till parametern discount för att tillämpa en diskonteringsränta. Se Använd parametrar med måttvyer.
  • Fönstermått:t7d_customers, som beräknar ett rullande 7-dagars antal unika kunder. Se Fönstermått för fler mönster för fönstermått.

Katalogutforskaren-användargränssnitt

Redigeraren lägger till ett exempelmått COUNT(*) automatiskt. Redigera eller ta bort den och lägg till mått så att måttvyn definierar exakt följande. För varje mått klickar du på Lägg till eller plusikonLägg till och anger sedan uttrycket i Builder - eller Anpassat läge. Ange visningsnamn, format och synonymer som visas. Använd 2 decimaler för valutaformat och 0 decimaler för talformat.

  1. order_count: I läget Builder väljer du aggregeringen Antal unika för o_orderkey. Ange visningsnamn som Order Count, format som Tal.
  2. total_revenue: I Builder-läge väljer du summaaggregeringo_totalprice. Ange visningsnamn till Total Revenue, format till Valuta (USD), synonymer till revenue, sales.
  3. discounted_revenue: I läget Anpassat anger du SUM(o_totalprice * (1 - discount)). Ange visningsnamn till Discounted Revenue, format till Valuta (USD).
  4. unique_customers: I läget Builder väljer du aggregeringen Antal distinkta för o_custkey. Ange visningsnamn som Unique Customers, format som Tal.
  5. avg_order_value: I anpassat läge anger du MEASURE(total_revenue) / MEASURE(order_count). Ange visningsnamn till Avg Order Value, format till Valuta (USD), synonymer till AOV.
  6. revenue_per_customer: I Anpassat-läge, ange MEASURE(total_revenue) / MEASURE(unique_customers). Ange visningsnamn till Revenue per Customer, format till Valuta (USD).
  7. open_order_revenue: I anpassat läge anger du SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O'). Ange visningsnamn till Open Order Revenue, format till Valuta (USD), synonymer till backlog.
  8. fulfilled_order_revenue: I läget Custom anger du SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F'). Ange visningsnamn till Fulfilled Revenue, format till Valuta (USD).
  9. t7d_customers: I Anpassat läge anger du COUNT(DISTINCT o_custkey). Klicka sedan på + Fönster och konfigurera ett fönster ordnat efter order_date med intervallet trailing 7 day och med last halvadditiv aggregering. Ange visningsnamn som 7-Day Rolling Customers, format som Tal.

De fullständiga måttstegen finns i Steg 5: Lägg till mått.

YAML-redigerare

measures:
  - name: order_count
    expr: COUNT(DISTINCT o_orderkey)
    display_name: Order Count
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact

  - name: total_revenue
    expr: SUM(o_totalprice)
    display_name: Total Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - revenue
      - sales

  - name: discounted_revenue
    expr: SUM(o_totalprice * (1 - discount))
    display_name: Discounted Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact

  - name: unique_customers
    expr: COUNT(DISTINCT o_custkey)
    display_name: Unique Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact

  - name: avg_order_value
    expr: MEASURE(total_revenue) / MEASURE(order_count)
    display_name: Avg Order Value
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - AOV

  - name: revenue_per_customer
    expr: MEASURE(total_revenue) / MEASURE(unique_customers)
    display_name: Revenue per Customer
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact

  - name: open_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
    display_name: Open Order Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - backlog

  - name: fulfilled_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
    display_name: Fulfilled Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact

  - name: t7d_customers
    expr: COUNT(DISTINCT o_custkey)
    window:
      - order: order_date
        semiadditive: last
        range: trailing 7 day
    display_name: 7-Day Rolling Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0

Granska den fullständiga definitionen

När du har slutfört stegen ovan har din måttvy följande fullständiga definition:

Visa den fullständiga YAML-definitionen
version: 1.1

parameters:
  - name: discount
    data_type: double
    default: 0

source: SELECT * FROM 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

filter: o_orderdate >= '1995-01-01'

comment: |-
  Sales analytics metric view for order performance analysis.
  Joins orders with customers and geography.
  Owner: Analytics Team
  Last updated: 2025-01-15

fields:
  - name: order_date
    expr: o_orderdate
    display_name: Order Date
  - name: order_month
    expr: "DATE_TRUNC('MONTH', order_date)"
    display_name: Order Month
  - name: order_year
    expr: YEAR(order_date)
    display_name: Order Year
  - name: order_status
    expr: |-
      CASE o_orderstatus
        WHEN 'O' THEN 'Open'
        WHEN 'P' THEN 'Processing'
        WHEN 'F' THEN 'Fulfilled'
      END
    display_name: Order Status
    synonyms:
      - status
      - fulfillment status
  - name: order_priority
    expr: "SPLIT(o_orderpriority, '-')[0]"
    display_name: Priority
  - name: customer_name
    expr: customer.c_name
    display_name: Customer Name
  - name: market_segment
    expr: customer.c_mktsegment
    display_name: Market Segment
    synonyms:
      - segment
      - industry
  - name: customer_nation
    expr: customer.nation.n_name
    display_name: Country
    synonyms:
      - nation
      - country

measures:
  - name: order_count
    expr: COUNT(DISTINCT o_orderkey)
    display_name: Order Count
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact
  - name: total_revenue
    expr: SUM(o_totalprice)
    display_name: Total Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - revenue
      - sales
  - name: discounted_revenue
    expr: SUM(o_totalprice * (1 - discount))
    display_name: Discounted Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: unique_customers
    expr: COUNT(DISTINCT o_custkey)
    display_name: Unique Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact
  - name: avg_order_value
    expr: MEASURE(total_revenue) / MEASURE(order_count)
    display_name: Avg Order Value
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - AOV
  - name: revenue_per_customer
    expr: MEASURE(total_revenue) / MEASURE(unique_customers)
    display_name: Revenue per Customer
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: open_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
    display_name: Open Order Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - backlog
  - name: fulfilled_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
    display_name: Fulfilled Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: t7d_customers
    expr: COUNT(DISTINCT o_custkey)
    window:
      - order: order_date
        semiadditive: last
        range: trailing 7 day
    display_name: 7-Day Rolling Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
Skapa måttvyn med hjälp av SQL

Om du skapar den här definitionen utanför Catalog Explorer kör du följande SQL för att skapa måttvyn:

CREATE OR REPLACE VIEW catalog.schema.tpch_sales_analytics
WITH METRICS
LANGUAGE YAML
AS $$
version: 1.1

parameters:
  - name: discount
    data_type: double
    default: 0

source: SELECT * FROM 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

filter: o_orderdate >= '1995-01-01'

comment: |-
  Sales analytics metric view for order performance analysis.
  Joins orders with customers and geography.
  Owner: Analytics Team
  Last updated: 2025-01-15

fields:
  - name: order_date
    expr: o_orderdate
    display_name: Order Date
  - name: order_month
    expr: "DATE_TRUNC('MONTH', order_date)"
    display_name: Order Month
  - name: order_year
    expr: YEAR(order_date)
    display_name: Order Year
  - name: order_status
    expr: |-
      CASE o_orderstatus
        WHEN 'O' THEN 'Open'
        WHEN 'P' THEN 'Processing'
        WHEN 'F' THEN 'Fulfilled'
      END
    display_name: Order Status
    synonyms:
      - status
      - fulfillment status
  - name: order_priority
    expr: "SPLIT(o_orderpriority, '-')[0]"
    display_name: Priority
  - name: customer_name
    expr: customer.c_name
    display_name: Customer Name
  - name: market_segment
    expr: customer.c_mktsegment
    display_name: Market Segment
    synonyms:
      - segment
      - industry
  - name: customer_nation
    expr: customer.nation.n_name
    display_name: Country
    synonyms:
      - nation
      - country

measures:
  - name: order_count
    expr: COUNT(DISTINCT o_orderkey)
    display_name: Order Count
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact
  - name: total_revenue
    expr: SUM(o_totalprice)
    display_name: Total Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - revenue
      - sales
  - name: discounted_revenue
    expr: SUM(o_totalprice * (1 - discount))
    display_name: Discounted Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: unique_customers
    expr: COUNT(DISTINCT o_custkey)
    display_name: Unique Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
      abbreviation: compact
  - name: avg_order_value
    expr: MEASURE(total_revenue) / MEASURE(order_count)
    display_name: Avg Order Value
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - AOV
  - name: revenue_per_customer
    expr: MEASURE(total_revenue) / MEASURE(unique_customers)
    display_name: Revenue per Customer
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: open_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
    display_name: Open Order Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
    synonyms:
      - backlog
  - name: fulfilled_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
    display_name: Fulfilled Revenue
    format:
      type: currency
      currency_code: USD
      decimal_places:
        type: exact
        places: 2
      abbreviation: compact
  - name: t7d_customers
    expr: COUNT(DISTINCT o_custkey)
    window:
      - order: order_date
        semiadditive: last
        range: trailing 7 day
    display_name: 7-Day Rolling Customers
    format:
      type: number
      decimal_places:
        type: exact
        places: 0
$$;

Andra sätt att skapa en måttvy finns i Skapa en måttvy.

Steg 8: Utför en fråga på din måttvy

Sök i metrikvyn med hjälp av verksamhetsanpassad syntax. Funktionen MEASURE() aggregerar ett mått i kornet för de fält som du väljer.

Aggregerade mått efter dimension

Det här exemplet aggregerar mått över flera fält. Den returnerar totala intäkter, orderantal och genomsnittligt ordervärde per kundnation och marknadssegment, rangordnat efter högsta intäkter först:

SELECT
  customer_nation,
  market_segment,
  MEASURE(total_revenue) AS total_revenue,
  MEASURE(order_count) AS order_count,
  MEASURE(avg_order_value) AS avg_order_value
FROM catalog.schema.tpch_sales_analytics
GROUP BY customer_nation, market_segment
ORDER BY total_revenue DESC;

Analysera en månatlig trend

I det här exemplet kombineras ett tidsfält med mått för att spåra en trend. Den returnerar totala intäkter och öppna orderintäkter (kvarvarande uppgifter) per månad och orderstatus:

SELECT
  order_month,
  order_status,
  MEASURE(total_revenue) AS total_revenue,
  MEASURE(open_order_revenue) AS open_order_revenue
FROM catalog.schema.tpch_sales_analytics
GROUP BY order_month, order_status
ORDER BY order_month;

Skicka ett parametervärde

Eftersom måttvyn definierar en parameter kan du anropa den som en tabellvärdesfunktion och skicka ett värde vid frågetillfället. Följande fråga tillämpar en rabatt på 10%. Eftersom discount har standardvärdet 0returnerar frågor som utelämnar argumentet intäkter som inte redovisats:

SELECT
  customer_nation,
  MEASURE(total_revenue) AS total_revenue,
  MEASURE(discounted_revenue) AS discounted_revenue
FROM catalog.schema.tpch_sales_analytics(discount => 0.1)
GROUP BY customer_nation
ORDER BY discounted_revenue DESC;

Det här har du lärt dig

Du har skapat en måttvy som visar:

Feature Example
Snowflake-schemasammanfogningar Beställningar från kund till land (kapslade många-till-en-sammanfogningar)
Tidsfält Datum, månad, årkornighet
Transformerade fält CASE instruktioner, SPLIT funktioner
Enkla mått COUNT, SUM
Komposbarhet avg_order_value och revenue_per_customer referera till tidigare definierade mått med hjälp av MEASURE()
Filtrerade mått FILTER (WHERE ...) för villkorsstyrda aggregeringar
Fönstermått Rullande 7-dagars kundantal med hjälp av trailing 7 day
Parameters discountparameter som används i måttet discounted_revenue
Agentmetadata display_name, format, synonyms för fält och mått

Ytterligare resurser