Didacticiel : créer une vue métrique avec des jointures et la modélisation des données
Dans ce tutoriel, vous créez une vue de métrique d'analytique des ventes sur le dataset TPC-H. Au final, vous disposerez d'une vue des métriques qui :
- Joint les commandes et les clients de plusieurs tables à l'aide d'un schéma en flocon de neige.
- Définit les champs (également appelés dimensions) pour le temps, la géographie et les attributs d'ordre.
- Calcule des mesures simples et complexes, y compris les ratios, les agrégations filtrées et les mesures de fenêtre.
- Utilise la composabilité pour construire des métriques complexes à partir de mesures plus simples.
- Définit un parameter pour appliquer un taux de remise au moment de la query.
- Comprend les métadonnées d'agent pour les tableaux de bord et les outils d'IA.
Si vous êtes nouveau dans les vues métriques, start avec Créer une vue métrique pour apprendre les bases. Ce didacticiel étend cette base avec une complexité réelle.
Exigences
Pour réaliser ce tutoriel, vous devez disposer de :
- Un workspace activé pour Unity Catalog.
- Un SQL Warehouse ou une ressource de compute exécutant Databricks Runtime 17.3 et versions ultérieures.
Pour la liste complète des privilèges requis pour créer une vue des métriques, consultez Prérequis.
La création d'une vue de métrique est prise en charge sur Databricks Runtime 16.4 et versions supérieures. Ce didacticiel utilise des fonctionnalités qui nécessitent Databricks Runtime 17.3 ou une version ultérieure, et certaines étapes nécessitent un runtime ultérieur. Pour le runtime minimum de chaque fonctionnalité, consultez la disponibilité des fonctionnalités de la vue de métrique.
Le modèle de données
Le dataset TPC-H modélise une chaîne d'approvisionnement en gros. Ce tutoriel utilise trois tables jointes dans un schéma en flocon de neige :
ordersrejointcustomersuro_custkey = c_custkeycustomerrejointnationsurc_nationkey = n_nationkey
Table | Rôle | Colonnes clés |
|---|---|---|
| Table de faits (transactions de commande) |
|
| Table de dimensions (détails des clients) |
|
| Table de dimension (référence de pays ou de région) |
|
Étape 1 : Créer la vue métrique et ouvrir l'éditeur
Vous pouvez créer cet affichage sous forme métrique dans l'interface utilisateur de Catalog Explorer, le générer avec Genie Code, ou écrire directement la définition YAML complète. Les trois méthodes se résolvent en une seule définition YAML qui modélise l'affichage sous forme métrique. À chaque étape suivante, sélectionnez l'onglet interface utilisateur de Catalog Explorer ou éditeur YAML pour suivre votre méthode préférée. Si vous utilisez l’éditeur YAML, l’exemple de code de chaque étape est la partie de la définition YAML qui correspond à ce que vous construisez dans cette étape.
Les exemples YAML de ce tutoriel utilisent le mot-clé fields. Lorsque vous créez une vue de métrique dans l'éditeur low-code, le YAML qu'il génère utilise le mot-clé dimensions équivalent à la place. Voir Champs.
Si vous n'êtes pas familiarisé avec l'interface utilisateur pour la création de vues métriques, consultez Créer une vue métrique.
Pour créer la vue de métriques, dans l'Explorateur de catalogues :
- Rechercher
samples.tpch.orders. - Cliquez sur le nom du tableau.
- Cliquez sur Créer > Vue métrique et nommez la vue.
Pour les étapes de création détaillées, consultez la page Créer une vue métrique. Lorsque l’éditeur s’ouvre, utilisez l’onglet **UI** pour créer de manière interactive, ou cliquez sur le <> bouton pour modifier directement la définition YAML.
Étape 2 : Configurer la vue métrique
Définissez une version et une description pour la vue métrique. Le version détermine la version de la spécification YAML, et le comment documente l'objectif de la vue des métriques, qui apparaît dans l'Explorateur de catalogues. Databricks gère la version pour vous.
- Catalog Explorer UI
- YAML editor
La version est définie pour vous. Pour ajouter ou modifier la description après avoir enregistré la vue de métriques :
- Dans l'Explorateur de catalogues, recherchez la vue de métriques et cliquez sur son nom.
- Cliquez sur Description , puis saisissez une description de la vue de métrique. Vous pouvez utiliser la description d'exemple affichée dans l'onglet YAML editor .
Ce texte correspond au champ comment dans la définition YAML. Pour d'autres façons de modifier une vue de métrique, consultez Modifier une vue de métrique.
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
Étape 3 : Définir la source et les jointures
Définissez la table source principale et joignez les tables associées :
sourcedéfinit la table de faits (commandes) comme la granularité.joinsimporte les données client à l'aide d'une relation de plusieurs à un.- La jointure
nationimbriquée démontre un modèle de schéma en flocon de neige, joignant viacustomerpour atteindre les données géographiques, où la nation est une sous-dimension du client.
- Catalog Explorer UI
- YAML editor
Cet exemple ajoute deux jointures, toutes deux de type plusieurs-à-un , pour modéliser le schéma en flocon de neige.
Pour ajouter la customer join :
- Dans l'éditeur, cliquez sur Joindre dans le coin supérieur droit pour ouvrir la boîte de dialogue Ajouter une jointure .
samples.tpch.customerRecherchez, cliquez sur le nom du tableau, puis cliquez sur **Ajouter**.- Définissez la condition de jointure sur
o_custkey = c_custkey. - Sous Cardinalité de la jointure , sélectionnez Plusieurs à un . Pour obtenir des conseils sur le choix d'une cardinalité, consultez Cardinalité de la jointure.
Ajoutez ensuite la jointure imbriquée nation. Répétez les étapes de la jointure customer, en joignant samples.tpch.nation sur c_nationkey = n_nationkey. L'imbrication de la jointure sous customer modélise la nation comme une sous-dimension du client.
Pour les étapes complètes de la boîte de dialogue de jointure, consultez Étape 2 : Ajouter une jointure.
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
Étape 4 : Définir un filtre
Un filter limite les données sources, et il s'applique à toutes les query sur la vue des métriques. Ce didacticiel limite la vue des métriques aux données récentes.
- Catalog Explorer UI
- YAML editor
Pour définir le filtre :
- Dans l'éditeur, cliquez sur
Filtre dans le coin supérieur droit.
- Utilisez les menus déroulants pour définir la colonne sur
o_orderdate, l' opérateur sur>=et la valeur sur1995-01-01.
Pour en savoir plus sur les filtres, consultez Étape 3 : Définir un filtre.
filter: o_orderdate >= '1995-01-01'
Étape 5 : Définir les champs
Les champs sont les attributs par lesquels les utilisateurs regroupent et filtrent. Un champ peut être une colonne catégorielle (telle que la région ou le statut) ou une colonne numérique non agrégée (telle que l’âge ou la quantité) que les utilisateurs agrègent au moment de la query.
Métadonnées de l'agent
Chaque champ et mesure de ce tutoriel inclut des propriétés de métadonnées d'agent qui améliorent la façon dont votre vue de métriques fonctionne avec les tableaux de bord et les outils d'IA :
display_name: Une étiquette lisible qui apparaît dans les visualisations au lieu du nom de colonne technique.synonyms: Noms alternatifs qui aident les outils d'IA comme Genie à découvrir les champs et les mesures grâce aux requêtes en langage naturel.format: Comment les valeurs s'affichent dans les surfaces en aval, telles que les tableaux de bord, les notebooks, et les résultats de query SQL, par exemple en tant que devise, nombre ou pourcentage.
Ces propriétés sont facultatives, mais recommandées. Les définitions de champ et de mesure des étapes suivantes les incluent en ligne.
Définitions de champ
Ce didacticiel ajoute :
- Champs de temps :
order_date,order_monthetorder_yearà plusieurs granularités pour prendre en charge différents besoins d'analyse. - Champs transformés :
order_statusetorder_priority, qui utilisentCASEetSPLITpour convertir les codes source en étiquettes lisibles. - Champs joints :
customer_name,market_segmentetcustomer_nation, qui font référence à des tables jointes à l'aide du nom de jointure. Les colonnes de jointure imbriquées utilisent la notation par points chaînés, telle quecustomer.nation.n_name, pour parcourir le schéma en flocon de neige.
- Catalog Explorer UI
- YAML editor
L'éditeur ajoute automatiquement toutes les colonnes sources à la **tab** Fields. Modifiez, renommez, supprimez et ajoutez des champs afin que la vue des métriques définisse exactement ce qui suit. Pour chaque champ, cliquez sur son nom pour le modifier ou cliquez sur Ajouter pour le créer, puis définissez l'expression en mode Générateur ou Personnalisé . Définissez le Nom d'affichage et les Synonymes pour chaque champ, comme illustré.
-
order_date : En mode Générateur , sélectionnez la colonne
o_orderdate. Définissez le nom d'affichage surOrder Date. -
order_month : En mode Personnalisé , entrez
DATE_TRUNC('MONTH', order_date). Définissez le nom d'affichage surOrder Month. -
order_year : en mode Personnalisé , saisissez
YEAR(order_date). Définissez le nom d'affichage surOrder Year. -
order_status : En mode Personnalisé, saisissez l'expression suivante. Définissez le nom d'affichage sur
Order Statuset les synonymes surstatus,fulfillment status.SQLCASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END -
order_priority : En mode Personnalisé , saisissez
SPLIT(o_orderpriority, '-')[0]. Définissez le nom d'affichage surPriority. -
customer_name : En mode Builder , sélectionnez la colonne
c_namede la tablecustomerjointe. Définir le nom d'affichage surCustomer Name. -
**market_segment** : En mode **Builder**, sélectionnez la
c_mktsegmentcolonne de lacustomertable jointe. Définissez le nom d'affichage surMarket Segmentet les synonymes sursegment,industry. -
customer_nation : En mode Personnalisé , saisissez
customer.nation.n_namepour référencer la jointure imbriquéenation. Définissez le nom d'affichage surCountryet les synonymes surnation,country.
Pour les étapes complètes du champ, consultez Étape 4 : Ajouter des champs.
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
Étape 6 : Définir les paramètres
Les paramètres vous permettent de transmettre des valeurs dans l'affichage des métriques lorsque vous l'interrogez, ainsi une seule définition peut servir de nombreuses variantes de requêtes. Ce tutoriel ajoute un discount paramètre qu'une mesure ultérieure utilise pour calculer le revenu actualisé. Le paramètre a un default de 0, donc les requêtes qui ne transmettent pas de valeur renvoient un revenu non escompté. Pour en savoir plus sur les paramètres, consultez Utiliser les paramètres avec les affichages de métriques.
- Catalog Explorer UI
- YAML editor
Dans l'en-tête de l'éditeur, cliquez sur Ajouter un paramètre . Saisissez discount comme nom, puis saisissez une valeur default de 0 et sélectionnez le type de données double.
parameters:
- name: discount
data_type: double
default: 0
Étape 7 : Définir des mesures
Les mesures sont les calculs que les utilisateurs veulent analyser. Définissez d'abord des mesures atomiques, puis utilisez la composabilité pour construire des métriques complexes qui référencent des mesures définies précédemment avec la fonction MEASURE(). Définissez les display_name, format et synonyms pour chaque mesure comme décrit dans Métadonnées de l'agent. Ce didacticiel ajoute :
- **Mesures atomiques
order_counttotal_revenue:**, et,unique_customersles agrégations simples qui constituent les blocs de construction. - Mesures composées :
avg_order_valueetrevenue_per_customer, qui référencent des mesures définies précédemment avecMEASURE()au lieu de dupliquer la logique d'agrégation. Sitotal_revenuechange, ces mesures utilisent automatiquement la définition mise à jour. Consultez la composabilité. - Mesures filtrées :
open_order_revenueetfulfilled_order_revenue, qui utilisentFILTER (WHERE ...)pour créer des métriques conditionnelles sans champs distincts. - **Mesure paramétrée
discounted_revenue:**, qui référence lediscountparamètre pour appliquer un taux de remise. Consultez Utiliser des paramètres avec les vues de métriques. - Mesure de fenêtre :
t7d_customers, qui calcule un nombre glissant de clients uniques sur 7 jours. Voir les mesures de fenêtre pour plus de modèles de mesures de fenêtre.
- Catalog Explorer UI
- YAML editor
L'éditeur ajoute automatiquement une mesure d'exemple COUNT(*). Modifiez-la ou supprimez-la et ajoutez des mesures afin que la vue métrique définisse exactement les éléments suivants. Pour chaque mesure, cliquez sur Ajouter , puis définissez l'expression en mode Générateur ou Personnalisé . Définissez le Nom d'affichage , le Format et les Synonymes comme indiqué. Utilisez 2 décimales pour les formats de devise et 0 décimale pour les formats numériques.
- order_count : En mode Création , sélectionnez l’agrégation Décompte unique sur
o_orderkey. Définissez le nom d’affichage surOrder Count, le format sur Nombre . - **total_revenue** : En mode **Générateur**, sélectionnez l'agrégation
o_totalprice**Somme** sur. Définissez le nom d'affichage sur,Total Revenuele format sur **Devise (USD)**, les synonymesrevenuesur,.sales - discounted_revenue : en mode Custom , saisissez
SUM(o_totalprice * (1 - discount)). Définir le nom d'affichage surDiscounted Revenue, formater en Devise (USD) . - **unique_customers** : En mode **Créateur**, sélectionnez l'agrégation **Décompte unique**
o_custkeysur. Définissez le nom d’affichage surUnique Customers, le format sur Nombre . - avg_order_value : en mode Personnalisé , saisissez
MEASURE(total_revenue) / MEASURE(order_count). Définissez le nom d'affichage surAvg Order Value, le format sur Monnaie (USD) , les synonymes surAOV. - revenue_per_customer : En mode personnalisé,
MEASURE(total_revenue) / MEASURE(unique_customers)saisissez. Définir le nom d'affichage surRevenue per Customer, formater en Devise (USD) . - open_order_revenue : en mode personnalisé , saisissez
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O'). Définissez le nom d'affichage surOpen Order Revenue, le format sur Monnaie (USD) , les synonymes surbacklog. - fulfilled_order_revenue : En mode Personnalisé , entrez
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F'). Définir le nom d'affichage surFulfilled Revenue, formater en Devise (USD) . - t7d_customers : En mode personnalisé , saisissez
COUNT(DISTINCT o_custkey). Cliquez ensuite sur + Fenêtre et configurez une fenêtre classée parorder_dateavec une plagetrailing 7 dayet une agrégation semi-additivelast. Définissez le nom d'affichage sur7-Day Rolling Customers, formatez en Nombre .
Pour toutes les étapes de mesure, voir Étape 5 : Ajouter des mesures.
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
Vérifier la définition complète
Après avoir terminé les étapes ci-dessus, votre vue de métrique a la définition complète suivante :
Afficher la définition YAML complète
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
Créez la vue métrique à l'aide de SQL.
Si vous construisez cette définition en dehors de l'Explorateur de catalogues, exécutez le SQL suivant pour créer la vue des métriques :
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
$$;
Pour d'autres façons de créer une vue métrique, voir Créer une vue métrique.
Étape 8 : interrogez votre vue de métriques
Interrogez la vue métrique à l'aide d'une syntaxe conviviale pour les utilisateurs métier. La fonction MEASURE() agrège une mesure au niveau de granularité des champs que vous sélectionnez.
Agréger les mesures par dimension
Cet exemple agrège des mesures sur plusieurs champs. Il renvoie le chiffre d'affaires total, le nombre de commandes et la valeur moyenne des commandes par pays du client et segment de marché, classés par chiffre d'affaires le plus élevé en premier :
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;
Analyser une tendance mensuelle
Cet exemple combine un champ temporel avec des mesures pour suivre une tendance. Il renvoie le chiffre d'affaires total et le chiffre d'affaires des commandes en cours (carnet de commandes) par mois et par statut de commande :
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;
Transmettre une valeur de paramètre
Étant donné que la vue de la métrique définit un parameter, vous pouvez l'appeler comme une fonction à valeur de table et lui transmettre une valeur au moment de la query. La query suivante applique une remise de 10 %. Puisque discount a un default de 0, les requêtes qui omettent l'argument renvoient un revenu non escompté :
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;
Ce que vous avez appris
Vous avez créé une vue métrique qui démontre :
Fonctionnalité | Exemple |
|---|---|
De commandes à client à nation (jointures plusieurs-à-un imbriquées) | |
Granularité de la date, du mois, de l'année | |
| |
| |
| |
| |
Nombre de clients glissant sur 7 jours à l'aide de | |
| |
|
Ressources supplémentaires
- Mesures de fenêtre pour calculer les moyennes mobiles et les totaux de l'année à ce jour.
- Matérialisation pour les vues métriques afin d'améliorer les performances de query pour les grands datasets.
- Utilisez les vues de métriques pour utiliser votre vue de métriques dans les tableaux de bord AI/BI.