Tutorial: creare una vista metrica con join e modellazione dei dati

In questa esercitazione si creerà una visualizzazione delle metriche di analisi delle vendite nel set di dati TPC-H. Al termine, si avrà una visualizzazione metrica che:

  • Unisce ordini e clienti tra più tabelle usando uno schema snowflake.
  • Definisce i campi (detti anche dimensioni) per gli attributi temporali, geografici e dell’ordine.
  • Calcola misure semplici e complesse, inclusi rapporti, aggregazioni filtrate e misure finestra.
  • Usa la componibilità per creare metriche complesse da misure più semplici.
  • Definisce un parametro per applicare un tasso di sconto al momento della query.
  • Include i metadati dell'agente per dashboard e strumenti di intelligenza artificiale.

Se non si ha familiarità con le visualizzazioni delle metriche, iniziare con Creare una visualizzazione delle metriche per apprendere le nozioni di base. Questa esercitazione estende tale base con la complessità del mondo reale.

Requisiti

Per completare l'esercitazione, sono necessari:

  • Un'area di lavoro abilitata per Unity Catalog.
  • Una risorsa di calcolo o di sql warehouse che esegue Databricks Runtime 17.3 o versione successiva.

Per l'elenco completo dei privilegi necessari per creare una visualizzazione delle metriche, vedere Prerequisiti.

Annotazioni

La creazione di una visualizzazione delle metriche è supportata in Databricks Runtime 16.4 e versioni successive. Questa esercitazione usa funzionalità che richiedono Databricks Runtime 17.3 o versione successiva e alcuni passaggi richiedono un runtime successivo. Per il runtime minimo per ogni funzionalità, vedere Disponibilità delle funzionalità di visualizzazione delle metriche.

Modello di dati

Il set di dati TPC-H modella una supply chain all'ingrosso. Questa esercitazione usa tre tabelle unite in uno schema snowflake:

  • orders si unisce a customer su o_custkey = c_custkey
  • customer si unisce a nation su c_nationkey = n_nationkey
Tabella Ruolo Colonne chiave
orders Tabella dei fatti (transazioni d'ordine) o_orderkey, o_custkey, o_totalprice, o_orderdateo_orderstatus
customer Tabella delle dimensioni (dettagli del cliente) c_custkey, c_name, c_mktsegmentc_nationkey
nation Tabella delle dimensioni (riferimento paese o area geografica) n_nationkey, n_name, n_regionkey

Passaggio 1: Creare la visualizzazione delle metriche e aprire l'editor

È possibile compilare questa visualizzazione delle metriche nell'interfaccia utente di Esplora cataloghi, generarla con Genie Code o scrivere direttamente la definizione YAML completa. Tutti e tre i metodi vengono risolti in una singola definizione YAML che modella la visualizzazione delle metriche. In ciascuno dei passaggi seguenti, selezionare la scheda Catalog Explorer UI o editor YAML in base al metodo preferito. Se si usa l'editor YAML, il codice di esempio in ogni passaggio è la parte della definizione YAML che corrisponde a ciò che si compila in tale passaggio.

Annotazioni

Gli esempi YAML in questa esercitazione usano la fields parola chiave . Quando si compila una visualizzazione delle metriche nell'editor a basso codice, il codice YAML generato usa invece la parola chiave equivalente dimensions . Vedi Campi.

Se non si ha familiarità con l'interfaccia utente per la creazione di visualizzazioni delle metriche, vedere Creare una visualizzazione delle metriche.

Per creare la visualizzazione delle metriche, in Esplora cataloghi:

  1. Cercare "samples.tpch.orders".
  2. Fare clic sul nome della tabella.
  3. Fare clic su Crea>visualizzazione metrica e denominare la visualizzazione.

Per i passaggi di creazione dettagliati, vedere Creare una visualizzazione delle metriche. Quando si apre l'editor, usare la scheda dell'interfaccia utente per compilare in modo interattivo o fare clic sul <> pulsante per modificare direttamente la definizione YAML.

Passaggio 2: Configurare la visualizzazione delle metriche

Impostare una versione e una descrizione per la visualizzazione delle metriche. version determina la versione della specifica YAML e comment documenta lo scopo della vista delle metriche, che viene visualizzato in Catalog Explorer. Azure Databricks gestisce automaticamente la versione.

Interfaccia utente di Esplora cataloghi

La versione è definita per te. Per aggiungere o modificare la descrizione dopo aver salvato la visualizzazione metrica:

  1. In Esplora catalogo, cerca la vista metrica e fai clic sul nome.
  2. Fare clic su Descrizione, quindi immettere una descrizione della visualizzazione metrica. È possibile usare la descrizione di esempio illustrata nella scheda dell'editor YAML .

Questo testo corrisponde al comment campo nella definizione YAML. Per altri modi per modificare una visualizzazione delle metriche, vedere Modificare una visualizzazione delle metriche.

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

Passaggio 3: Definire la fonte e le relazioni

Definire la tabella di origine primaria e unire le tabelle correlate:

  • source imposta la tabella dei fatti (ordini) come livello di granularità.
  • joins porta i dati dei clienti usando una relazione molti-a-uno.
  • La join annidata nation dimostra uno schema a fiocco di neve, passando attraverso customer per arrivare ai dati geografici, in cui la nazione è una sottodimensione del cliente.

Interfaccia utente di Esplora cataloghi

In questo esempio vengono aggiunti due join, entrambi Many-to-one, per modellare uno schema a fiocco di neve.

Per aggiungere il join customer:

  1. Nell'editor fare clic su Partecipa nell'angolo superiore destro per aprire la finestra di dialogo Aggiungi join .
  2. Cerca samples.tpch.customer, fai clic sul nome della tabella, quindi fai clic su Aggiungi.
  3. Impostare la condizione di unione su o_custkey = c_custkey.
  4. In Cardinalità del join, seleziona Molti a uno. Per indicazioni sulla scelta di una cardinalità, consulta Join cardinality.

Quindi aggiungi il join annidato nation. Ripetere i passaggi del customer join, aggiungendo samples.tpch.nation a c_nationkey = n_nationkey. Annidamento del join in customer modelli nazione come sottodimensione del cliente.

Per i passaggi completi della finestra di dialogo del full join, vedere Passaggio 2: Aggiungere un full join.

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

Passaggio 4: Definire un filtro

Un filter limita i dati sorgente e si applica a tutte le query nella vista metrica. Questa esercitazione limita la visualizzazione delle metriche ai dati recenti.

Interfaccia utente di Esplora cataloghi

Per definire il filtro:

  1. Nell'editor fare clic sull'icona Filtro.Filtrare nell'angolo superiore destro.
  2. Usare i menu a discesa per impostare La colonna su o_orderdate, l'operatore su >=e il valore su 1995-01-01.

Per altre informazioni sui filtri, vedere Passaggio 3: Definire un filtro.

Editor YAML

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

Passaggio 5: Definire i campi

I campi sono gli attributi in base ai quali gli utenti raggruppano e filtrano. Un campo può essere una colonna categorica(ad esempio area o stato) o una colonna numerica non raggruppata (ad esempio età o quantità) che gli utenti aggregano in fase di query.

Metadati dell'agente

Ogni campo e misura in questa esercitazione include proprietà dei metadati dell'agente che migliorano il funzionamento della visualizzazione delle metriche con dashboard e strumenti di intelligenza artificiale:

  • display_name: etichetta leggibile visualizzata nelle visualizzazioni anziché nel nome della colonna tecnica.
  • synonyms: nomi alternativi che consentono agli strumenti di intelligenza artificiale come Genie di individuare campi e misure tramite query in linguaggio naturale.
  • format: modalità di visualizzazione dei valori nelle superfici downstream, ad esempio dashboard, notebook e risultati di query SQL, ad esempio valuta, numero o percentuale.

Queste proprietà sono facoltative ma consigliate. Le definizioni di campo e di misura nei passaggi seguenti le includono direttamente nel testo.

Definizioni dei campi

In questa esercitazione aggiungeremo:

  • Campi temporali:order_date, order_monthe order_year a più granularità per supportare esigenze di analisi diverse.
  • Campi trasformati:order_status e order_priority, che usano CASE e SPLIT per convertire i codici sorgente in etichette leggibili.
  • Campi collegati:customer_name, market_segment e customer_nation, che fanno riferimento a tabelle collegate utilizzando il nome del join. Le colonne di join annidate usano la notazione con punti concatenati, ad esempio customer.nation.n_name, per percorrere lo schema snowflake.

Interfaccia utente di Esplora cataloghi

L'editor aggiunge automaticamente tutte le colonne di origine alla scheda Campi . Modificare, rinominare, rimuovere e aggiungere campi in modo che la visualizzazione metrica definisca esattamente quanto segue. Per ogni campo, fare clic sul nome per modificarlo oppure fare clic sull'icona Aggiungi o più per crearla, quindi impostare l'espressione in modalità Generatore o Personalizzata. Impostare il nome visualizzato e i sinonimi per ogni campo, come illustrato.

  1. order_date: In modalità Builder, seleziona la colonna o_orderdate. Imposta il nome visualizzato su Order Date.

  2. order_month: in modalità personalizzata immettere DATE_TRUNC('MONTH', order_date). Imposta il nome visualizzato su Order Month.

  3. order_year: in modalità personalizzata immettere YEAR(order_date). Imposta il nome visualizzato su Order Year.

  4. order_status: in modalità personalizzata immettere l'espressione seguente. Impostare il nome visualizzato su Order Status e i sinonimi su status, fulfillment status.

    CASE o_orderstatus
      WHEN 'O' THEN 'Open'
      WHEN 'P' THEN 'Processing'
      WHEN 'F' THEN 'Fulfilled'
    END
    
  5. order_priority: in modalità personalizzata immettere SPLIT(o_orderpriority, '-')[0]. Imposta il nome visualizzato su Priority.

  6. customer_name: In modalità Builder, selezionare la colonna c_name dalla tabella customer collegata. Imposta il nome visualizzato su Customer Name.

  7. market_segment: In modalità Builder, seleziona la colonna c_mktsegment dalla tabella customer unita. Impostare il nome visualizzato su Market Segment e i sinonimi su segment, industry.

  8. customer_nation: In modalità personalizzata, immettere customer.nation.n_name per fare riferimento al join annidato nation. Impostare il nome visualizzato su Country e i sinonimi su nation, country.

Per i passaggi completi del campo, vedere Passaggio 4: Aggiungere campi.

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

Passaggio 6: Definire i parametri

I parametri consentono di passare valori alla vista della metrica quando la si interroga, in modo che una singola definizione possa supportare molte varianti di query. Questa esercitazione aggiunge un parametro discount che una misura successiva usa per calcolare i ricavi scontati. Il parametro ha come valore predefinito 0, quindi le query che non passano alcun valore restituiscono ricavi non scontati. Per altre informazioni sui parametri, vedere Usare i parametri con le visualizzazioni delle metriche.

Interfaccia utente di Esplora cataloghi

Nell'intestazione dell'editor fare clic su Aggiungi parametro. Immettere discount come nome, quindi immettere un valore predefinito di 0 e selezionare il double tipo di dati.

Editor YAML

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

Passaggio 7: Definire le misure

Le misure sono i calcoli che gli utenti vogliono analizzare. Definire prima misure atomiche, quindi usare la componibilità per creare metriche complesse che fanno riferimento a misure definite in precedenza con la MEASURE() funzione . Impostare display_name, format e synonyms per ogni misura come descritto in Metadati dell'agente. In questa esercitazione aggiungeremo:

  • Misure atomiche:order_count, total_revenuee unique_customers, le aggregazioni semplici che formano i blocchi predefiniti.
  • Misure composte:avg_order_value e revenue_per_customer, che fanno riferimento a misure definite in precedenza con MEASURE() anziché duplicare la logica di aggregazione. Se total_revenue cambia, queste misure utilizzano automaticamente la definizione aggiornata. Vedere Componibilità.
  • Misure filtrate:open_order_revenue e fulfilled_order_revenue, che usano FILTER (WHERE ...) per creare metriche condizionali senza campi separati.
  • Misura con parametri:discounted_revenue che fa riferimento al discount parametro per applicare una tariffa di sconto. Vedi Usare i parametri con le visualizzazioni delle metriche.
  • Misura della finestra:t7d_customers, che calcola un conteggio mobile su 7 giorni dei clienti unici. Vedi Misure finestra per altri modelli di misura delle finestre.

Interfaccia utente di Esplora cataloghi

L'editor aggiunge automaticamente una misura di esempio COUNT(*) . Modificarlo o rimuoverlo e aggiungere misure in modo che la visualizzazione metrica definisca esattamente quanto segue. Per ogni misura, fare clic su Aggiungi o sull'icona piùAggiungi, quindi impostare l'espressione in modalità Generatore o Personalizzata. Impostare nome visualizzato, formato e sinonimi come illustrato. Utilizzare 2 posizioni decimali per i formati di valuta e 0 cifre decimali per i formati numerici.

  1. order_count: in modalità Generatore selezionare l'aggregazione Conteggio valori distinti in o_orderkey. Imposta il nome visualizzato come Order Count e il formato su Numero.
  2. total_revenue: In modalità Generatore, selezionare l'aggregazione Somma su o_totalprice. Impostare il nome visualizzato su Total Revenue, il formato come Valuta (USD), i sinonimi come revenue, sales.
  3. discounted_revenue: in modalità personalizzata immettere SUM(o_totalprice * (1 - discount)). Impostare il nome visualizzato su Discounted Revenue, il formato su Valuta (USD).
  4. unique_customers: In modalità Generatore, selezionare l'aggregazione Conteggio valori distinti su o_custkey. Imposta il nome visualizzato come Unique Customers e il formato su Numero.
  5. avg_order_value: in modalità personalizzata immettere MEASURE(total_revenue) / MEASURE(order_count). Impostare il nome visualizzato su Avg Order Value, il formato su Valuta (USD), i sinonimi su AOV.
  6. revenue_per_customer: in modalità personalizzata immettere MEASURE(total_revenue) / MEASURE(unique_customers). Impostare il nome visualizzato su Revenue per Customer, il formato su Valuta (USD).
  7. open_order_revenue: in modalità personalizzata immettere SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O'). Impostare il nome visualizzato su Open Order Revenue, il formato su Valuta (USD), i sinonimi su backlog.
  8. fulfilled_order_revenue: Nella modalità personalizzata, immetti SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F'). Impostare il nome visualizzato su Fulfilled Revenue, il formato su Valuta (USD).
  9. t7d_customers: in modalità personalizzata immettere COUNT(DISTINCT o_custkey). Fare quindi clic su + Finestra e configurare una finestra ordinata per order_date con intervallo trailing 7 day e aggregazione semiadditiva last. Imposta il nome visualizzato come 7-Day Rolling Customers e il formato su Numero.

Per i passaggi completi della misura, vedere Passaggio 5: Aggiungere misure.

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

Esaminare la definizione completa

Dopo aver completato i passaggi precedenti, la visualizzazione delle metriche ha la definizione completa seguente:

Visualizzare la definizione YAML completa
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
Creare la visualizzazione delle metriche con SQL

Se si compila questa definizione all'esterno di Esplora cataloghi, eseguire il codice SQL seguente per creare la visualizzazione delle metriche:

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

Per altri modi per creare una visualizzazione delle metriche, vedere Creare una visualizzazione delle metriche.

Passaggio 8: Eseguire una query sulla visualizzazione delle metriche

Eseguire una query sulla visualizzazione delle metriche usando la sintassi business-friendly. La MEASURE() funzione aggrega una misura in base alla granularità dei campi selezionati.

Aggregare le misure per dimensione

Questo esempio aggrega le misure in più campi. Restituisce i ricavi totali, il conteggio degli ordini e il valore medio degli ordini in base alla nazione del cliente e al segmento di mercato, classificati in base ai ricavi più alti per primi:

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;

Analizzare una tendenza mensile

In questo esempio viene combinato un campo ora con le misure per tenere traccia di una tendenza. Restituisce i ricavi totali e i ricavi aperti degli ordini (backlog) per mese e stato dell'ordine:

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;

Passare un valore di parametro

Poiché la vista metrica definisce un parametro, è possibile chiamarla come funzione con valori di tabella e passare un valore in fase di query. La query seguente applica uno sconto di 10%. Poiché discount ha un valore predefinito di 0, le query che omettono l'argomento restituiscono ricavi non scontati:

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;

Cosa si è appreso

È stata creata una visualizzazione delle metriche che illustra:

Feature Example
Join dello schema Snowflake Ordini dal cliente alla nazione (join molti-a-uno annidati)
Campi orari Granularità di data, mese, anno
Campi trasformati CASE istruzioni, SPLIT funzioni
Misure semplici COUNT, SUM
Componibilità avg_order_value e revenue_per_customer fare riferimento a misure definite in precedenza usando MEASURE()
Misure filtrate FILTER (WHERE ...) per le aggregazioni condizionali
Misure finestra Conteggio dei clienti di 7 giorni in sequenza con trailing 7 day
Parametri discount parametro applicato nella discounted_revenue misura
Metadati dell'agente display_name, format, synonyms su campi e misure

Risorse aggiuntive