Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie bouwt u een metrische weergave voor verkoopanalyse op de TPC-H gegevensset. Aan het einde hebt u een metrische weergave die:
- Hiermee worden orders en klanten samengevoegd in meerdere tabellen met behulp van een snowflake-schema.
- Definieert velden (ook wel dimensies genoemd) voor kenmerken voor tijd, geografie en volgorde.
- Hiermee worden eenvoudige en complexe metingen berekend, waaronder verhoudingen, gefilterde aggregaties en venstermetingen.
- Maakt gebruik van composabiliteit om complexe metrische gegevens te bouwen op basis van eenvoudigere metingen.
- Hiermee definieert u een parameter om een kortingstarief toe te passen op het moment van de query.
- Bevat metagegevens van agents voor dashboards en AI-hulpprogramma's.
Als metrische weergaven nieuw voor u zijn, begint u met Een metrische weergave maken om de basis te leren. In deze handleiding wordt die basis uitgebreid met reële complexiteit.
Requirements
U hebt het volgende nodig om deze zelfstudie te voltooien:
- Een werkruimte waarvoor Unity Catalog is ingeschakeld.
- Een SQL Warehouse- of rekenresource met Databricks Runtime 17.3 of hoger.
Zie Vereisten voor de volledige lijst met bevoegdheden die zijn vereist voor het maken van een metrische weergave.
Note
Het maken van een metrische weergave wordt ondersteund in Databricks Runtime 16.4 en hoger. In deze zelfstudie worden functies gebruikt waarvoor Databricks Runtime 17.3 of hoger is vereist. Voor sommige stappen is een latere runtime vereist. Zie beschikbaarheid van metrische weergavefuncties voor de minimale runtime voor elke functie.
Het gegevensmodel
De TPC-H gegevensset modelleert een groothandelsvoorzieningsketen. In deze zelfstudie worden drie tabellen gebruikt die zijn gekoppeld aan een snowflake-schema:
-
orderswordt verbonden metcustomeropo_custkey = c_custkey -
customerwordt verbonden metnationopc_nationkey = n_nationkey
| Table | Role | Sleutelkolommen |
|---|---|---|
orders |
Feitentabel (ordertransacties) |
o_orderkey, o_custkey, o_totalprice, o_orderdate, , o_orderstatus |
customer |
Dimensietabel (klantgegevens) |
c_custkey,c_name,c_mktsegment,c_nationkey |
nation |
Dimensietabel (verwijzing naar land of regio) |
n_nationkey, , n_namen_regionkey |
Stap 1: De metrische weergave maken en de editor openen
U kunt deze metrische weergave maken in de gebruikersinterface van Catalog Explorer, deze genereren met Genie Code of de volledige YAML-definitie rechtstreeks schrijven. Alle drie de methoden worden omgezet in één YAML-definitie die de metrische weergave modellt. Selecteer in elke stap die volgt het tabblad Catalog Explorer UI of YAML-editor om de gewenste methode te volgen. Als u de YAML-editor gebruikt, is de voorbeeldcode in elke stap het gedeelte van de YAML-definitie dat overeenkomt met wat u in die stap bouwt.
Note
In de YAML-voorbeelden in deze zelfstudie wordt het fields trefwoord gebruikt. Wanneer u een metrische weergave in de editor met weinig code maakt, wordt in plaats daarvan het equivalente dimensions trefwoord gebruikt voor de YAML die wordt gegenereerd. Zie Velden.
Zie Een metrische weergave maken als u niet bekend bent met de gebruikersinterface voor het maken van metrische weergaven.
Ga als volgende te werk om de metrische weergave te maken in Catalog Explorer:
- Zoek naar
samples.tpch.orders. - Klik op de tabelnaam.
- Klik op Maken>Metriekweergave en geef de weergave een naam.
Zie Een metrische weergave maken voor gedetailleerde stappen. Wanneer de editor wordt geopend, gebruikt u het tabblad UI om interactief te bouwen of klikt u op de <> knop om de YAML-definitie rechtstreeks te bewerken.
Stap 2: De metrische weergave instellen
Stel een versie en een beschrijving in voor de metrische weergave. De version bepaalt de versie van de YAML-specificatie en de comment documenteert het doel van de metriekweergave, dat wordt weergegeven in Catalog Explorer. Azure Databricks beheert de versie voor u.
Gebruikersinterface van Catalog Explorer
De versie is voor u gedefinieerd. De beschrijving toevoegen of bewerken nadat u de metrische weergave hebt opgeslagen:
- Zoek in Catalog Explorer naar de metrische weergave en klik op de naam ervan.
- Klik op Beschrijving en voer een beschrijving in van de metrische weergave. U kunt de voorbeeldbeschrijving gebruiken die wordt weergegeven op het tabblad YAML-editor .
Deze tekst komt overeen met het comment veld in de YAML-definitie. Zie Een metrische weergave bewerken voor meer manieren om een metrische weergave te bewerken.
YAML-editor
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
Stap 3: De bron en de Joins definiëren
Geef de primaire brontabel op en koppel gerelateerde tabellen:
-
sourcestelt de feitentabel (orders) in als het graan. -
joinsbrengt klantgegevens met behulp van een veel-op-een-relatie in. - De geneste
nation-join demonstreert een snowflake-schemapatroon en koppelt viacustomerom geografische gegevens te ontsluiten, waarbij nation een subdimensie van customer is.
Gebruikersinterface van Catalog Explorer
In dit voorbeeld worden twee koppelingen, beide veel-op-één, toegevoegd om het snowflake-schema te modelleren.
Om de samenvoeging customer toe te voegen:
- Klik in de editor in de rechterbovenhoek op Deelnemen om het dialoogvenster Join toevoegen te openen.
- Zoek naar
samples.tpch.customer, klik op de tabelnaam en klik vervolgens op Toevoegen. - Stel de joinvoorwaarde in op
o_custkey = c_custkey. - Onder Join-kardinaliteit, selecteer Veel-op-een. Zie Join-kardinaliteit voor hulp bij het kiezen van een kardinaliteit.
Voeg vervolgens de geneste nation-join toe. Herhaal de stappen van de customer-join en voeg samples.tpch.nation samen op basis van c_nationkey = n_nationkey. Door de join onder customer te nesten, wordt nation gemodelleerd als een subdimensie van customer.
Zie stap 2: Een join toevoegen voor de volledige stappen voor het dialoogvenster Join.
YAML-editor
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
Stap 4: Een filter definiëren
Een filter beperkt de brongegevens en is van toepassing op alle query's in de metriekweergave. In deze zelfstudie wordt de metrische weergave beperkt tot recente gegevens.
Gebruikersinterface van Catalog Explorer
Het filter definiëren:
- Klik in de editor op
Filter in de rechterbovenhoek.
- Gebruik de vervolgkeuzelijsten om de kolom
o_orderdatein te stellen op, de operator op>=en de waarde op1995-01-01.
Zie stap 3 voor meer informatie over filters : Een filter definiëren.
YAML-editor
filter: o_orderdate >= '1995-01-01'
Stap 5: Velden definiëren
Velden zijn de kenmerken die gebruikers groeperen en filteren op. Een veld kan een categorische kolom (zoals regio of status) of een niet-geaggregeerde numerieke kolom (zoals leeftijd of hoeveelheid) zijn die gebruikers op het moment van de query aggregeren.
Metagegevens van agent
Elk veld en elke meting in deze zelfstudie bevat eigenschappen voor metagegevens van agents die de werking van uw metrische weergave verbeteren met dashboards en AI-hulpprogramma's:
-
display_name: Een leesbaar label dat wordt weergegeven in visualisaties in plaats van de naam van de technische kolom. -
synonyms: Alternatieve namen die AI-hulpprogramma's zoals Genie helpen velden en metingen te ontdekken via query's in natuurlijke taal. -
format: Hoe waarden worden weergegeven in onderliggende onderdelen zoals dashboards, notebooks en resultaten van SQL-query’s, bijvoorbeeld als valuta, getal of percentage.
Deze eigenschappen zijn optioneel, maar worden aanbevolen. De definities van velden en metingen in de volgende stappen zijn inline opgenomen.
Velddefinities
Deze zelfstudie voegt het volgende toe:
-
Tijdvelden:
order_date,order_monthenorder_yearop meerdere granulariteiten om verschillende analysebehoeften te ondersteunen. -
Getransformeerde velden:
order_statusenorder_priority, dieCASEenSPLITgebruiken om broncodes om te zetten in leesbare labels. -
Gekoppelde velden:
customer_name,market_segmentencustomer_nation, die verwijzen naar gekoppelde tabellen met behulp van de joinnaam. Geneste joinkolommen gebruiken aaneengeschakelde puntnotatie, zoalscustomer.nation.n_name, om door het snowflake-schema te navigeren.
Gebruikersinterface van Catalog Explorer
De editor voegt automatisch alle bronkolommen toe aan het tabblad Velden . U kunt velden bewerken, de naam ervan wijzigen, verwijderen en toevoegen, zodat de metrische weergave precies het volgende definieert. Klik voor elk veld op de naam om het te bewerken of klik op
om het te maken en stel vervolgens de expressie in de opbouwfunctie of aangepaste modus in. Stel de weergavenaam en synoniemen in voor elk veld, zoals wordt weergegeven.
order_date: Selecteer de kolom in de
o_orderdate-modus. Stel de weergavenaam in opOrder Date.order_month: Voer in de aangepaste modus in
DATE_TRUNC('MONTH', order_date). Stel de weergavenaam in opOrder Month.order_year: Voer in de aangepaste modus in
YEAR(order_date). Stel de weergavenaam in opOrder Year.order_status: Voer in de aangepaste modus de volgende expressie in. Stel de weergavenaam in op
Order Statusen synoniemen opstatus,fulfillment status.CASE o_orderstatus WHEN 'O' THEN 'Open' WHEN 'P' THEN 'Processing' WHEN 'F' THEN 'Fulfilled' ENDorder_priority: Voer in de aangepaste modus in
SPLIT(o_orderpriority, '-')[0]. Stel de weergavenaam in opPriority.customer_name: Selecteer in de opbouwmodus de
c_namekolom in de gekoppeldecustomertabel. Stel de weergavenaam in opCustomer Name.market_segment: Selecteer in de opbouwfunctiemodus de
c_mktsegmentkolom in de gekoppeldecustomertabel. Stel de weergavenaam in opMarket Segmenten synoniemen opsegment,industry.customer_nation: Voer in de modus Aangepast
customer.nation.n_namein om te verwijzen naar de genestenation-join. Stel de weergavenaam in opCountryen synoniemen opnation,country.
Zie stap 4 voor de volledige veldstappen : Velden toevoegen.
YAML-editor
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
Stap 6: Parameters definiëren
Met parameters kunt u waarden doorgeven in de metrische weergave wanneer u er query's op uitvoert, zodat één definitie veel queryvarianten kan leveren. In deze tutorial wordt de parameter discount toegevoegd die een latere maatstaf gebruikt om de gedisconteerde omzet te berekenen. De standaardwaarde van de parameter is 0, dus query's die geen waarde doorgeven, retourneren omzet zonder korting. Zie Parameters gebruiken met metrische weergaven voor meer informatie over parameters.
Gebruikersinterface van Catalog Explorer
Klik in de kop van de editor op Parameter toevoegen. Voer discount de naam in en voer vervolgens een standaardwaarde in van 0 en selecteer het double gegevenstype.
YAML-editor
parameters:
- name: discount
data_type: double
default: 0
Stap 7: Metingen definiëren
Metingen zijn de berekeningen die gebruikers willen analyseren. Definieer eerst atomische metingen en gebruik vervolgens composabiliteit om complexe metrische gegevens te bouwen die verwijzen naar eerder gedefinieerde metingen met de MEASURE() functie. Stel de display_name, formaten synonyms voor elke meting in zoals beschreven in metagegevens van agent. Deze zelfstudie voegt het volgende toe:
-
Atomische metingen:
order_count,total_revenueenunique_customers, de eenvoudige aggregaties die de bouwstenen vormen. -
Samengestelde metingen:
avg_order_valueenrevenue_per_customer, die verwijzen naar eerder gedefinieerde metingen metMEASURE()in plaats van aggregatielogica te dupliceren. Alstotal_revenueer wijzigingen worden aangebracht, wordt voor deze metingen automatisch de bijgewerkte definitie gebruikt. Zie Composability. -
Gefilterde metingen:
open_order_revenueenfulfilled_order_revenue, die gebruikenFILTER (WHERE ...)om voorwaardelijke metrische gegevens te maken zonder afzonderlijke velden. -
Geparameteriseerde meting:
discounted_revenue, die verwijst naar dediscountparameter om een kortingstarief toe te passen. Zie Parameters gebruiken met metrische weergaven. -
Venstermaatstaf:
t7d_customers, waarmee een voortschrijdend aantal over 7 dagen van unieke klanten wordt berekend. Zie Venstermetingen voor meer venstermetingspatronen.
Gebruikersinterface van Catalog Explorer
De editor voegt automatisch een voorbeeldmeting COUNT(*) toe. Bewerk of verwijder deze en voeg metingen toe, zodat de metrische weergave precies het volgende definieert. Klik voor elke meting op
en stel vervolgens de expressie in de opbouwfunctie of aangepaste modus in. Stel de weergavenaam, opmaak en synoniemen in zoals weergegeven. Gebruik 2 decimalen voor valutanotaties en 0 decimalen voor getalnotaties.
-
order_count: Selecteer in de opbouwmodus het aantal afzonderlijke aggregaties op
o_orderkey. Stel de weergavenaam in opOrder Counten de notatie op Getal. -
total_revenue: Selecteer in de opbouwmodus de aggregatie Som op
o_totalprice. Stel de weergavenaam in opTotal Revenue, de indeling op Valuta (USD), en de synoniemen oprevenue,sales. -
discounted_revenue: Voer in de aangepaste modus in
SUM(o_totalprice * (1 - discount)). Stel de weergavenaam in opDiscounted Revenue, de indeling op Valuta (USD). -
unique_customers: Selecteer in de opbouwmodus het aantal afzonderlijke aggregaties op
o_custkey. Stel de weergavenaam in opUnique Customersen de notatie op Getal. -
avg_order_value: Voer in de aangepaste modus in
MEASURE(total_revenue) / MEASURE(order_count). Stel de weergavenaam in opAvg Order Value, de notatie op Valuta (USD) en de synoniemen opAOV. -
revenue_per_customer: Voer in de aangepaste modus in
MEASURE(total_revenue) / MEASURE(unique_customers). Stel de weergavenaam in opRevenue per Customer, de indeling op Valuta (USD). -
open_order_revenue: Voer in de aangepaste modus in
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O'). Stel de weergavenaam in opOpen Order Revenue, de notatie op Valuta (USD) en de synoniemen opbacklog. -
fulfilled_order_revenue: Voer in de aangepaste modus in
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F'). Stel de weergavenaam in opFulfilled Revenue, de indeling op Valuta (USD). -
t7d_customers: Voer in de aangepaste modus in
COUNT(DISTINCT o_custkey). Klik vervolgens op + Window en configureer een venster dat oporder_dateis gesorteerd, met bereiktrailing 7 dayenlastsemi-additieve aggregatie. Stel de weergavenaam in op7-Day Rolling Customersen de notatie op Getal.
Zie stap 5: Metingen toevoegen voor de volledige metingsstappen.
YAML-editor
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
De volledige definitie controleren
Nadat u de bovenstaande stappen hebt voltooid, heeft uw metrische weergave de volgende volledige definitie:
De volledige YAML-definitie weergeven
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
De metrische weergave maken met behulp van SQL
Als u deze definitie buiten Catalog Explorer bouwt, voert u de volgende SQL uit om de metrische weergave te maken:
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
$$;
Zie Een metrische weergave maken voor andere manieren om een metrische weergave te maken.
Stap 8: Een query uitvoeren op uw metrische weergave
Voer een query uit voor de metrische weergave met behulp van bedrijfsvriendelijke syntaxis. De MEASURE()-functie aggregeert een meetwaarde op het granulariteitsniveau van de velden die u selecteert.
Metingen aggregeren per dimensie
In dit voorbeeld worden metingen voor meerdere velden samengevoegd. Het retourneert de totale omzet, het aantal orders en de gemiddelde orderwaarde per klantland en marktsegment, gerangschikt op de hoogste omzet eerst:
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;
Een maandelijkse trend analyseren
In dit voorbeeld wordt een tijdveld gecombineerd met metingen om een trend bij te houden. Het retourneert de totale omzet en openstaande orderopbrengsten (achterstand) per maand en 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;
Een parameterwaarde doorgeven
Omdat de metrische weergave een parameter definieert, kunt u deze aanroepen als een tabelwaardefunctie en een waarde doorgeven tijdens de query. De volgende query past een korting van 10% toe. Omdat discount standaard de waarde 0 heeft, retourneren query’s die het argument weglaten omzet zonder korting:
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;
Wat u hebt geleerd
U hebt een metrische weergave gemaakt die het volgende laat zien:
| Feature | Voorbeeld |
|---|---|
| Snowflake-schema-joins | Orders naar klant en natie (geneste veel-op-een koppelingen) |
| Tijdvelden | Datum, maand, jaargranulariteit |
| Getransformeerde velden |
CASE instructies, SPLIT functies |
| Eenvoudige metingen |
COUNT, SUM |
| Composabiliteit |
avg_order_value en revenue_per_customer verwijzen naar eerder gedefinieerde metingen met behulp van MEASURE() |
| Gefilterde metingen |
FILTER (WHERE ...) voor voorwaardelijke aggregaties |
| Vensterafmetingen | Zevendaags rollend klantenaantal met behulp van trailing 7 day |
| Parameters |
discount parameter toegepast in de discounted_revenue meting |
| Metagegevens van agent |
display_name, format, synonyms op velden en meetwaarden |
Aanvullende informatiebronnen
- Venstermaatregelen voor het berekenen van lopende gemiddelden en jaar-tot-datum totalen.
- Materialisatie voor metrische weergaven om de queryprestaties voor grote gegevenssets te verbeteren.
- Gebruik metrische weergaven om uw metrische weergave te gebruiken in AI/BI-dashboards.