Kurz: Vytvoření zobrazení metrik pomocí spojení a modelování dat

V tomto kurzu vytvoříte zobrazení metrik analýzy prodeje na TPC-H datové sadě. Na konci budete mít zobrazení metriky, které:

  • Spojí objednávky a zákazníky napříč několika tabulkami pomocí schématu snowflake.
  • Definuje pole (označovaná také jako dimenze) pro atributy času, zeměpisu a pořadí.
  • Vypočítá jednoduché a složité míry včetně poměrů, filtrovaných agregací a měr oken.
  • Používá kompozičnost k vytváření složitých metrik z jednodušších měr.
  • Definuje parametr, který použije diskontní sazbu v době dotazu.
  • Obsahuje metadata agenta pro řídicí panely a nástroje AI.

Pokud s zobrazeními metrik začínáte, začněte vytvořením zobrazení metrik a seznamte se se základy. Tento kurz rozšiřuje tento základ o skutečnou složitost.

Požadavky

K dokončení tohoto kurzu potřebujete:

  • Pracovní prostor s podporou Unity Catalog.
  • SQL Warehouse nebo výpočetní prostředek, na kterém běží Databricks Runtime 17.3 nebo novější.

Úplný seznam oprávnění potřebných k vytvoření zobrazení metrik najdete v tématu Požadavky.

Note

Vytvoření zobrazení metrik se podporuje v Databricks Runtime 16.4 a novějších. Tento návod používá funkce, které vyžadují Databricks Runtime ve verzi 17.3 nebo novější, a některé kroky vyžadují novější verzi runtime. Informace o minimální verzi runtime pro každou funkci najdete na stránce Dostupnost funkce zobrazení metrik.

Datový model

Datová sada TPC-H modeluje velkoobchodní dodavatelský řetězec. V tomto kurzu se používají tři tabulky spojené ve schématu sněhové vločky:

  • orders se připojuje k customer na o_custkey = c_custkey
  • customer se připojuje k nation na c_nationkey = n_nationkey
Tabulka Úloha Klíčové sloupce
orders Tabulka faktů (transakce objednávek) o_orderkey, o_custkey, o_totalprice, , o_orderdateo_orderstatus
customer Dimenzionální tabulka (podrobnosti o zákaznících) c_custkey, c_name, , c_mktsegmentc_nationkey
nation Tabulka dimenzí (odkaz na zemi nebo oblast) n_nationkey, n_name, n_regionkey

Krok 1: Vytvoření zobrazení metrik a otevření editoru

Toto zobrazení metrik můžete sestavit v uživatelském rozhraní Průzkumníka katalogu, vygenerovat ho pomocí kódu Genie nebo přímo napsat úplnou definici YAML. Všechny tři metody se přeloží na jednu definici YAML, která modeluje zobrazení metrik. V každém následujícím kroku vyberte kartu editoru Průzkumníka katalogů nebo editor YAML a postupujte podle preferované metody. Pokud používáte editor YAML, ukázkový kód v každém kroku je část definice YAML, která odpovídá tomu, co v tomto kroku vytvoříte.

Note

Příklady YAML v tomto kurzu používají fields klíčové slovo. Když v editoru low-code vytvoříte zobrazení metrik, YAML, který se při tom vygeneruje, místo něj používá odpovídající klíčové slovo dimensions. Viz pole.

Pokud neznáte uživatelské rozhraní pro vytváření zobrazení metrik, přečtěte si téma Vytvoření zobrazení metriky.

Chcete-li v Průzkumníku katalogu vytvořit zobrazení metrik:

  1. Vyhledejte samples.tpch.orders.
  2. Klikněte na název tabulky.
  3. Klikněte na Vytvořit>zobrazení metriky a pojmenujte zobrazení.

Podrobný postup vytvoření najdete v tématu Vytvoření zobrazení metriky. Po otevření editoru můžete interaktivně vytvořit pomocí karty uživatelského rozhraní nebo kliknutím na <> tlačítko upravit definici YAML přímo.

Krok 2: Nastavení zobrazení metriky

Nastavte verzi a popis zobrazení metriky. version určuje verzi specifikace YAML a comment popisuje účel zobrazení metrik, který se zobrazuje v Průzkumníku katalogu. Azure Databricks spravuje verzi za vás.

Uživatelské rozhraní Průzkumníka katalogů

Verze je pro vás definovaná. Přidání nebo úprava popisu po uložení zobrazení metriky:

  1. V Průzkumníku katalogu vyhledejte zobrazení metriky a klikněte na jeho název.
  2. Klikněte na Popis a zadejte popis zobrazení metriky. Můžete použít ukázkový popis zobrazený na kartě YAML editor.

Tento text odpovídá comment poli v definici YAML. Další způsoby, jak upravit zobrazení metriky, najdete v tématu Úprava zobrazení metriky.

Editor YAML

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

Krok 3: Definování zdroje a spojení

Definujte primární zdrojovou tabulku a připojte související tabulky:

  • source nastaví tabulku faktů (objednávky) jako základní úroveň detailu.
  • joins importuje zákaznická data pomocí relace M:1.
  • Vnořené nation spojení demonstruje vzor schématu sněhové vločky a propojuje se přes customer ke geografickým datům, kde země je subdimenzí zákazníka.

Uživatelské rozhraní Průzkumníka katalogů

Tento příklad přidává dvě vazby, obě Many-to-one, pro modelování schématu snowflake.

Přidání spojení customer:

  1. V editoru kliknutím na Připojit v pravém horním rohu otevřete dialogové okno Přidat spojení .
  2. Vyhledejte samples.tpch.customerpoložku , klikněte na název tabulky a potom klikněte na Přidat.
  3. Nastavte podmínku spojení na o_custkey = c_custkey.
  4. V části Kardinalita spojení vyberte možnost Mnoho k jednomu. Pokyny k volbě kardinality najdete v tématu Kardinalita spojení.

Potom přidejte vnořené nation spojení. Opakujte kroky ze spojení customer, přičemž připojíte samples.tpch.nation k c_nationkey = n_nationkey. Vnoření spojení pod customer modeluje stát jako subdimenzi zákazníka.

Postup úplného dialogového okna připojení najdete v kroku 2: Přidání spojení.

Editor YAML

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

Krok 4: Definování filtru

filter omezuje zdrojová data a vztahuje se na všechny dotazy nad zobrazením metrik. Tento návod omezuje zobrazení metrik pouze na nejnovější data.

Uživatelské rozhraní Průzkumníka katalogů

Definování filtru:

  1. V editoru klikněte na ikonu Filtru.Filtrujte v pravém horním rohu.
  2. Pomocí rozevíracích nabídek nastavte Sloupec na o_orderdate, Operátor na >= a Hodnota na 1995-01-01.

Další informace o filtrech najdete v kroku 3: Definování filtru.

Editor YAML

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

Krok 5: Definování polí

Pole jsou atributy, podle které uživatelé seskupují a filtrují. Pole může být sloupec kategorií (například oblast nebo stav) nebo neagregovaný číselný sloupec (například věk nebo množství), který uživatelé agregují v době dotazu.

Metadata agenta

Každé pole a míra v tomto kurzu zahrnují vlastnosti metadat agenta , které zlepšují fungování zobrazení metrik s řídicími panely a nástroji AI:

  • display_name: Čitelný popisek, který se zobrazí ve vizualizacích místo názvu technického sloupce.
  • synonyms: Alternativní názvy, které pomáhají nástrojům umělé inteligence, jako je Genie, zjišťovat pole a míry prostřednictvím dotazů v přirozeném jazyce.
  • format: Jak se hodnoty zobrazují v podřízených plochách, jako jsou řídicí panely, poznámkové bloky a výsledky dotazů SQL, například měna, číslo nebo procento.

Tyto vlastnosti jsou volitelné, ale doporučuje se. Definice polí a měr jsou v následujících krocích uvedeny přímo.

Definice polí

Tento kurz zahrnuje:

  • Časová pole:order_dateorder_month a order_year s několika podrobnostmi, které podporují různé potřeby analýzy.
  • Transformovaná pole:order_status a order_priority, které používají CASE a SPLIT převádějí zdrojové kódy na čitelné popisky.
  • Spojená pole:customer_name, market_segmenta customer_nation, které odkazují na spojené tabulky pomocí názvu spojení. Sloupce vnořeného spojení používají řetězenou tečkovanou notaci, například customer.nation.n_name, k procházení schématu typu sněhová vločka.

Uživatelské rozhraní Průzkumníka katalogů

Editor přidá všechny zdrojové sloupce na kartu Pole automaticky. Upravte, přejmenujte, odeberte a přidejte pole tak, aby zobrazení metrik přesně definovalo následující. U každého pole klikněte na jeho název a upravte ho nebo klikněte na Přidat nebo plus a vytvořte ho a pak nastavte výraz v Tvůrci nebo vlastním režimu. Nastavte zobrazovaný název a synonyma pro každé pole, jak je znázorněno.

  1. order_date: V režimu Sestavitel vyberte sloupec o_orderdate. Nastavte zobrazovaný název na Order Date.

  2. order_month: Ve vlastním režimu zadejte DATE_TRUNC('MONTH', order_date). Nastavte zobrazovaný název na Order Month.

  3. order_year: Ve vlastním režimu zadejte YEAR(order_date). Nastavte zobrazovaný název na Order Year.

  4. order_status: Ve vlastním režimu zadejte následující výraz. Nastavte zobrazovaný název na Order Status a synonyma na status, fulfillment status.

    CASE o_orderstatus
      WHEN 'O' THEN 'Open'
      WHEN 'P' THEN 'Processing'
      WHEN 'F' THEN 'Fulfilled'
    END
    
  5. order_priority: Ve vlastním režimu zadejte SPLIT(o_orderpriority, '-')[0]. Nastavte zobrazovaný název na Priority.

  6. customer_name: V režimu Tvůrce vyberte c_name sloupec ze spojené customer tabulky. Nastavte zobrazovaný název na Customer Name.

  7. market_segment: V režimu Builder vyberte sloupec c_mktsegment z připojené tabulky customer. Nastavte zobrazovaný název na Market Segment a synonyma na segment, industry.

  8. customer_nation: V režimu Custom zadejte customer.nation.n_name, chcete-li odkázat na vnořené spojení nation. Nastavte zobrazovaný název na Country a synonyma na nation, country.

Úplný postup pole najdete v kroku 4: Přidání polí.

Editor YAML

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

Krok 6: Definování parametrů

Parametry umožňují předávat hodnoty do zobrazení metrik při dotazování, takže jedna definice může obsluhovat mnoho variant dotazů. Tento kurz přidává parametr discount, který později použitá metrika využívá k výpočtu diskontovaných výnosů. Parametr má výchozí hodnotu 0, takže dotazy, které nepředávají žádnou hodnotu, vrátí nezlevněné výnosy. Další informace o parametrech najdete v části Použití parametrů v zobrazeních metrik.

Uživatelské rozhraní Průzkumníka katalogů

V záhlaví editoru klikněte na Přidat parametr. Jako název zadejte discount, poté zadejte výchozí hodnotu 0 a vyberte datový typ double.

Editor YAML

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

Krok 7: Definování měr

Míry jsou výpočty, které uživatelé chtějí analyzovat. Nejprve definujte atomické míry a pak pomocí kompozitability sestavte komplexní metriky, které odkazují na dříve definované míry s MEASURE() funkcí. Nastavte display_name, format a synonyms pro každou metriku, jak je popsáno v metadatech agenta. Tento návod přidává:

  • Atomické míry:order_counttotal_revenue a unique_customersjednoduché agregace, které tvoří stavební bloky.
  • Složené metriky:avg_order_value a revenue_per_customer, které odkazují na dříve definované metriky pomocí MEASURE() místo duplikování logiky agregace. Pokud total_revenue se změní, tyto míry automaticky používají aktualizovanou definici. Viz Možnosti kompilace.
  • Filtrované metriky:open_order_revenue a fulfilled_order_revenue, které pomocí FILTER (WHERE ...) vytvářejí podmíněné metriky bez samostatných polí.
  • Parametrizovaná míra:discounted_revenue, která odkazuje na parametr discount k použití diskontní sazby. Viz Použití parametrů se zobrazeními metrik.
  • Míra okna:t7d_customers, která počítá průběžný 7denní počet jedinečných zákazníků. Další vzory měr oken najdete v tématu Míry okna .

Uživatelské rozhraní Průzkumníka katalogů

Editor přidá ukázkovou COUNT(*) míru automaticky. Upravte nebo odeberte a přidejte míry tak, aby zobrazení metrik definovalo přesně toto. U každé míry klikněte na Přidat nebo plus ikonuPřidat a pak nastavte výraz v Tvůrci nebo vlastním režimu. Nastavte zobrazovaný název, formát a synonyma , jak je znázorněno. Použijte 2 desetinná místa pro formáty měny a 0 desetinných míst pro formáty čísel.

  1. order_count: V režimu Sestavovač vyberte agregaci Počet jedinečných hodnot u o_orderkey. Nastavte zobrazovaný název na Order Count, formát na Číslo.
  2. total_revenue: V režimu Builder vyberte agregaci Součet u o_totalprice. Nastavte zobrazovaný název na Total Revenue, formát na Měna (USD), synonyma na revenue, sales.
  3. discounted_revenue: Ve vlastním režimu zadejte SUM(o_totalprice * (1 - discount)). Nastavte zobrazovaný název na Discounted Revenue, formát na Měna (USD).
  4. unique_customers: V režimu Builder vyberte agregaci Počet různých hodnot u o_custkey. Nastavte zobrazovaný název na Unique Customers, formát na Číslo.
  5. avg_order_value: Ve vlastním režimu zadejte MEASURE(total_revenue) / MEASURE(order_count). Nastavte zobrazovaný název na Avg Order Value, formát na Měna (USD), synonyma na AOV.
  6. revenue_per_customer: Ve vlastním režimu zadejte MEASURE(total_revenue) / MEASURE(unique_customers). Nastavte zobrazovaný název na Revenue per Customer, formát na Měna (USD).
  7. open_order_revenue: Ve vlastním režimu zadejte SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O'). Nastavte zobrazovaný název na Open Order Revenue, formát na Měna (USD), synonyma na backlog.
  8. fulfilled_order_revenue: Ve vlastním režimu zadejte SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F'). Nastavte zobrazovaný název na Fulfilled Revenue, formát na Měna (USD).
  9. t7d_customers: Ve vlastním režimu zadejte COUNT(DISTINCT o_custkey). Potom klikněte na + Okno a nakonfigurujte okno seřazené podle order_date, s rozsahem trailing 7 day a last semiaditivní agregací. Nastavte zobrazovaný název na 7-Day Rolling Customers, formát na Číslo.

Úplný postup míry najdete v kroku 5: Přidání měr.

Editor YAML

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

Kontrola úplné definice

Po dokončení výše uvedených kroků má zobrazení metrik následující úplnou definici:

Zobrazení úplné definice YAML
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
Vytvoření zobrazení metrik pomocí SQL

Pokud vytváříte tuto definici mimo Průzkumníka katalogu, spusťte následující příkaz SQL a vytvořte zobrazení metriky:

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
$$;

Další způsoby vytvoření zobrazení metrik najdete v tématu Vytvoření zobrazení metriky.

Krok 8: Dotazování zobrazení metrik

Dotazování zobrazení metrik pomocí syntaxe vhodné pro firmy Funkce MEASURE() agreguje metriku na úrovni podrobnosti polí, která vyberete.

Agregace měr podle dimenzí

Tento příklad agreguje míry napříč více poli. Vrátí celkové výnosy, počet objednávek a průměrnou hodnotu objednávky podle země zákazníka a tržního segmentu, seřazené sestupně podle celkových výnosů:

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;

Analýza měsíčního trendu

Tento příklad kombinuje časové pole s mírami ke sledování trendu. Vrátí celkové výnosy a výnosy z otevřené objednávky (backlog) podle měsíce a stavu objednávky:

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;

Předání hodnoty parametru

Vzhledem k tomu, že zobrazení metriky definuje parametr, můžete ho volat jako funkci s hodnotou tabulky a předat hodnotu v době dotazu. Následující dotaz použije slevu 10%. Protože discount má výchozí hodnotu 0, dotazy, které vynechají argument, vracejí nediskontované výnosy:

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;

Co jste se naučili

Vytvořili jste zobrazení metriky, které ukazuje:

funkce Example
Spojení schématu Snowflake Objednávky zákazníkům na národ (vnořené spojení M:1)
Časová pole Datum, měsíc, členitost roku
Transformovaná pole CASE příkazy, SPLIT funkce
Jednoduchá opatření COUNT, SUM
Kompozičnost avg_order_value a revenue_per_customer odkazují na dříve definovaná opatření pomocí MEASURE()
Filtrovaná opatření FILTER (WHERE ...) pro podmíněné agregace
Míry oken Průběžný 7denní počet zákazníků s využitím trailing 7 day
Parameters discount parametr použitý v discounted_revenue míře
Metadata agenta display_name, format, synonyms u polí a měřítek

Další zdroje informací