Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans ce tutoriel, vous créez une vue de métriques Sales Analytics sur le jeu de données TPC-H. À la fin, vous aurez une vue de métrique qui :
- Relie les commandes et les clients entre plusieurs tables à l’aide d’un schéma en flocon.
- Définit des champs (également appelés dimensions) pour les attributs de temps, de géographie et de commande.
- Calcule des mesures simples et complexes, notamment les ratios, les agrégations filtrées et les mesures de fenêtre.
- Utilise la composabilité pour créer des métriques complexes à partir de mesures plus simples.
- Définit un paramètre pour appliquer un taux de remise au moment de la requête.
- Inclut les métadonnées de l’agent pour les tableaux de bord et les outils IA.
Si vous débutez avec les vues de métriques, commencez par créer une vue de métrique pour découvrir les principes de base. Ce tutoriel étend cette base avec une complexité réelle.
Exigences
Pour suivre ce didacticiel, vous avez besoin de :
- Un espace de travail activé pour le catalogue Unity.
- Une ressource d'entrepôt SQL ou de calcul exécutant Databricks Runtime 17.3 ou une version ultérieure.
Pour obtenir la liste complète des privilèges requis pour créer une vue de métrique, consultez Conditions préalables.
Note
La création d’une vue métrique est prise en charge sur Databricks Runtime 16.4 et versions ultérieures. Ce didacticiel utilise des fonctionnalités qui nécessitent Databricks Runtime 17.3 ou version ultérieure, et certaines étapes nécessitent un runtime ultérieur. Pour le runtime minimal pour chaque fonctionnalité, consultez la disponibilité des fonctionnalités de vue de métrique.
Modèle de données
Le jeu de données TPC-H modélise une chaîne d’approvisionnement en gros. Ce tutoriel utilise trois tables jointes dans un schéma snowflake :
-
ordersjointures àcustomerono_custkey = c_custkey -
customerjointures ànationonc_nationkey = n_nationkey
| Table | Role | Colonnes clés |
|---|---|---|
orders |
Table de faits (transactions de commande) |
o_orderkey, , o_custkeyo_totalprice, , o_orderdateo_orderstatus |
customer |
Table de dimensionnement (détails du client) |
c_custkey, c_name, c_mktsegment, c_nationkey |
nation |
Table de dimension (référence pays ou région) |
n_nationkey, n_name, n_regionkey |
Étape 1 : Créer l’affichage des métriques et ouvrir l’éditeur
Vous pouvez générer cette vue de métrique dans l’interface utilisateur de l’Explorateur de catalogues, la 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 des métriques. Dans chaque étape suivante, sélectionnez l’onglet De l’interface utilisateur de l’Explorateur de catalogues ou de l’é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 générez à cette étape.
Note
Les exemples YAML de ce didacticiel utilisent le fields mot clé. Lorsque vous générez une vue de métrique dans l’éditeur de faible code, le YAML qu’il génère utilise plutôt le mot clé équivalent dimensions . Voir Champs.
Si vous n’êtes pas familiarisé avec l’interface utilisateur pour créer des vues de métriques, consultez Créer une vue de métrique.
Pour créer l’affichage des métriques, dans l’Explorateur de catalogues :
- Recherchez
samples.tpch.orders. - Cliquez sur le nom de la table.
- Cliquez sur Créer un>affichage métrique et nommez l’affichage.
Pour connaître les étapes de création détaillées, consultez Créer une vue de métrique. Lorsque l’éditeur s’ouvre, utilisez l’onglet interface utilisateur pour générer de manière interactive ou cliquez sur le <> bouton pour modifier la définition YAML directement.
Étape 2 : Configurer l’affichage des métriques
Définissez une version et une description pour l’affichage des métriques.
version détermine la version de la spécification YAML, et comment documente l’objectif de la vue des métriques, qui apparaît dans l’Explorateur de catalogues. Azure Databricks gère la version pour vous.
Interface utilisateur de l’Explorateur de catalogues
La version est définie pour vous. Pour ajouter ou modifier la description après avoir enregistré l’affichage des métriques :
- Dans l’Explorateur de catalogues, recherchez l’affichage des métriques et cliquez sur son nom.
- Cliquez sur Description, puis entrez une description de l’affichage des métriques. Vous pouvez utiliser l’exemple de description affiché dans l’onglet de l’éditeur YAML .
Ce texte correspond au comment champ de la définition YAML. Pour plus d’informations sur la modification d’une vue de métrique, consultez Modifier une vue de métrique.
Éditeur 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
É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 grain. -
joinsapporte des données client à l’aide d’une relation de plusieurs à un. - La jointure imbriquée
nationillustre un modèle de schéma en flocon, en passant parcustomerpour accéder aux données géographiques, où la nation est une sous-dimension du client.
Interface utilisateur de l’Explorateur de catalogues
Cet exemple ajoute deux jointures, toutes deux Plusieurs-à-un, pour modéliser le schéma en flocon.
Pour ajouter la customer jonction :
- Dans l’éditeur, cliquez sur Joindre dans le coin supérieur droit pour ouvrir la boîte de dialogue Ajouter une jointure .
- Recherchez
samples.tpch.customer, cliquez sur le nom de la table, puis cliquez sur Ajouter. - Définissez la condition de jointure sur
o_custkey = c_custkey. - Sous Jointure cardinalité, sélectionnez Plusieurs-à-un. Pour obtenir des conseils sur le choix d’une cardinalité, consultez La cardinalité de jointure.
Ajoutez ensuite la jointure imbriquée nation. Répétez les étapes de l’étape customer join, en joignant samples.tpch.nation sur c_nationkey = n_nationkey. Imbriquer la jointure sous customer modélise la nation comme sous-dimension du client.
Pour connaître les étapes de la boîte de dialogue de jointure complète, consultez l’étape 2 : Ajouter une jointure.
Éditeur 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
Étape 4 : Définir un filtre
Un filter limite les données source et s’applique à toutes les requêtes sur la vue de métriques. Ce didacticiel limite l’affichage des métriques aux données récentes.
Interface utilisateur de l’Explorateur de catalogues
Pour définir le filtre :
- Dans l’éditeur, cliquez sur
Filtrez 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 plus d’informations sur les filtres, consultez l’étape 3 : Définir un filtre.
Éditeur YAML
filter: o_orderdate >= '1995-01-01'
Étape 5 : Définir des champs
Les champs sont les attributs que les utilisateurs utilisent pour regrouper et filtrer. Un champ peut être une colonne catégorielle (telle que la région ou l’état) 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 requête.
Métadonnées de l’agent
Chaque champ et mesure de ce didacticiel inclut des propriétés de métadonnées d’agent qui améliorent le fonctionnement de votre vue de métrique avec les tableaux de bord et les outils IA :
-
display_name: étiquette lisible qui apparaît dans les visualisations au lieu du nom de colonne technique. -
synonyms: Autres noms qui aident les outils d’IA tels que Genie à découvrir des champs et des mesures grâce à des requêtes en langage naturel. -
format: comment les valeurs s’affichent dans des surfaces en aval telles que des tableaux de bord, des notebooks et des résultats de requête SQL, par exemple en tant que devise, nombre ou pourcentage.
Ces propriétés sont facultatives mais recommandées. Les définitions des champs et des mesures figurant dans les étapes suivantes les incluent directement dans le texte.
Définitions des champs
Ce tutoriel 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 des codes sources en étiquettes lisibles. -
Champs joints :
customer_name,market_segmentetcustomer_nation, qui référencent des tables jointes à l’aide du nom de jointure. Les colonnes de jointure imbriquées utilisent la notation à points enchaînés, par exemplecustomer.nation.n_name, pour parcourir le schéma en flocon.
Interface utilisateur de l’Explorateur de catalogues
L’éditeur ajoute automatiquement toutes les colonnes sources à l’onglet Champs . Modifiez, renommez, supprimez et ajoutez des champs afin que l’affichage 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 complet et les synonymes pour chaque champ, comme indiqué.
order_date : en mode Générateur , sélectionnez la
o_orderdatecolonne. 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é , entrez
YEAR(order_date). Définissez le nom d’affichage surOrder Year.order_status : en mode personnalisé , entrez l’expression suivante. Définissez le nom d’affichage sur
Order Statuset les synonymes surstatus,fulfillment status.CASE o_orderstatus WHEN 'O' THEN 'Open' WHEN 'P' THEN 'Processing' WHEN 'F' THEN 'Fulfilled' ENDorder_priority : en mode personnalisé , entrez
SPLIT(o_orderpriority, '-')[0]. Définissez le nom d’affichage surPriority.customer_name : en mode Générateur , sélectionnez la
c_namecolonne dans la table jointecustomer. Définissez le nom d’affichage surCustomer Name.market_segment : en mode Générateur , sélectionnez la
c_mktsegmentcolonne dans la table jointecustomer. Définissez le nom d’affichage surMarket Segmentet les synonymes sursegment,industry.customer_nation : en mode personnalisé, entrez
customer.nation.n_namepour faire référence à la jointure imbriquéenation. Définissez le nom d’affichage surCountryet les synonymes surnation,country.
Pour connaître les étapes complètes du champ, consultez l’étape 4 : Ajouter des champs.
Éditeur 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
Étape 6 : Définir des paramètres
Les paramètres vous permettent de passer des valeurs dans la vue de métrique lorsque vous l’interrogez, afin qu’une définition unique puisse servir de nombreuses variantes de requête. Ce tutoriel ajoute un discount paramètre qu’une mesure ultérieure utilise pour calculer les revenus réduits. Le paramètre a une valeur par défaut 0, de sorte que les requêtes qui ne passent pas de valeur retournent des revenus non comptabilisés. Pour plus d’informations sur les paramètres, consultez Utiliser des paramètres avec des vues de métriques.
Interface utilisateur de l’Explorateur de catalogues
Dans le titre de l’éditeur, cliquez sur Ajouter un paramètre. Entrez discount comme nom, puis entrez une valeur par défaut de 0 et sélectionnez le type de données double.
Éditeur YAML
parameters:
- name: discount
data_type: double
default: 0
Étape 7 : Définir des mesures
Les mesures sont les calculs que les utilisateurs souhaitent analyser. Définissez d’abord les mesures atomiques, puis utilisez la composabilité pour créer des métriques complexes qui référencent des mesures définies précédemment avec la MEASURE() fonction. Définissez le display_name, formatet synonyms pour chaque mesure, comme décrit dans les métadonnées de l’Agent. Ce tutoriel ajoute :
-
Mesures atomiques :
order_count,total_revenueetunique_customers, les agrégations simples qui forment les blocs de construction. -
Mesures composées :
avg_order_valueetrevenue_per_customer, qui font référence à des mesures définies précédemment auMEASURE()lieu de dupliquer la logique d’agrégation. Sitotal_revenuedes modifications sont apportées, ces mesures utilisent automatiquement la définition mise à jour. Consultez Composabilité. -
Mesures filtrées :
open_order_revenueetfulfilled_order_revenue, qui permettentFILTER (WHERE ...)de créer des métriques conditionnelles sans champs distincts. -
Mesure paramétrable :
discounted_revenue, qui fait référence audiscountparamètre pour appliquer un taux de remise. Voir Utiliser des paramètres avec des vues métriques. -
Mesure de fenêtre :
t7d_customers, qui calcule un nombre continu de 7 jours de clients uniques. Consultez les mesures de fenêtre pour plus de modèles de mesures de fenêtre.
Interface utilisateur de l’Explorateur de catalogues
L’éditeur ajoute automatiquement une mesure d’exemple COUNT(*). Modifiez ou supprimez-le et ajoutez des mesures afin que l’affichage des métriques définit exactement les éléments suivants. Pour chaque mesure, cliquez sur
, 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 monétaires et 0 décimales pour les formats numériques.
-
order_count : en mode Créateur, sélectionnez l’agrégation Nombre de valeurs distinctes sur
o_orderkey. Définissez le nom d’affichage surOrder Count, le format sur Nombre. -
total_revenue : dans le mode Builder, sélectionnez l’agrégation Somme sur
o_totalprice. Définissez le nom d’affichage surTotal Revenue, le format sur Devise (USD), les synonymes surrevenue,sales. -
discounted_revenue : en mode personnalisé , entrez
SUM(o_totalprice * (1 - discount)). Définissez le nom d’affichage surDiscounted Revenue, le format sur Devise (USD). -
unique_customers : en mode Générateur, sélectionnez l’agrégation Nombre de valeurs distinctes sur
o_custkey. Définissez le nom d’affichage surUnique Customers, le format sur Nombre. -
avg_order_value : en mode personnalisé , entrez
MEASURE(total_revenue) / MEASURE(order_count). Définissez le nom d’affichage surAvg Order Value, le format sur Devise (USD), les synonymes surAOV. -
revenue_per_customer : en mode personnalisé , entrez
MEASURE(total_revenue) / MEASURE(unique_customers). Définissez le nom d’affichage surRevenue per Customer, le format sur 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 Devise (USD) et les synonymes surbacklog. -
fulfilled_order_revenue : en mode personnalisé , entrez
SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F'). Définissez le nom d’affichage surFulfilled Revenue, le format sur Monétaire (USD). -
t7d_customers : en mode personnalisé , entrez
COUNT(DISTINCT o_custkey). Cliquez ensuite sur + Fenêtre et configurez une fenêtre ordonnée parorder_date, avec une plagetrailing 7 dayet une agrégation semi-additivelast. Définissez le nom d’affichage sur7-Day Rolling Customers, le format sur Nombre.
Pour connaître les étapes de mesure complètes, consultez l’étape 5 : Ajouter des mesures.
Éditeur 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
Passer en revue la définition complète
Une fois les étapes ci-dessus terminées, 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éer la vue métrique à l’aide de SQL
Si vous créez cette définition en dehors de l’Explorateur de catalogues, exécutez le code SQL suivant pour créer l’affichage 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 de métrique, consultez Créer une vue de métrique.
Étape 8 : Interroger votre vue des métriques
Interrogez la vue des métriques à l’aide de la syntaxe conviviale pour l’entreprise. La MEASURE() fonction agrège une mesure au niveau du grain des champs que vous sélectionnez.
Agréger des mesures par dimension
Cet exemple agrège les mesures sur plusieurs champs. Elle retourne le chiffre d’affaires total, le nombre de commandes et la valeur moyenne des commandes par nation client et segment de marché, classés en premier par chiffre d’affaires le plus élevé :
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 de temps avec des mesures pour suivre une tendance. Elle retourne le chiffre d’affaires total et le chiffre d’affaires des commandes ouvertes (backlog) par mois et l’état 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;
Passer une valeur de paramètre
Étant donné que la vue de métrique définit un paramètre, vous pouvez l’appeler en tant que fonction table et passer une valeur au moment de la requête. La requête suivante applique une remise de 10%. Étant donné qu’elle discount a une valeur par défaut 0, les requêtes qui omettent l’argument retournent des revenus non comptabilisés :
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 de métrique qui illustre :
| Fonctionnalité | Example |
|---|---|
| Jointures de schéma Snowflake | Commandes des clients par nation (jointures de plusieurs-à-un imbriquées) |
| Champs d’heure | Date, mois, granularité annuelle |
| Champs transformés |
CASE instructions, SPLIT fonctions |
| Mesures simples |
COUNT, SUM |
| Composabilité |
avg_order_value et revenue_per_customer référencer des mesures définies précédemment à l’aide de MEASURE() |
| Mesures filtrées |
FILTER (WHERE ...) pour les agrégations conditionnelles |
| Mesures de fenêtre | Nombre de clients sur 7 jours glissants à l’aide de trailing 7 day |
| Paramètres |
discount paramètre appliqué dans la discounted_revenue mesure |
| Métadonnées de l’agent |
display_name, format sur synonyms les champs et les mesures |
Ressources supplémentaires
- Mesures de fenêtre pour calculer les moyennes mobiles et les totaux cumulés depuis le début de l'année.
- Matérialisation des vues de métriques afin d’améliorer les performances des requêtes pour les jeux de données volumineux.
- Utilisez des vues de métriques pour utiliser votre vue de métrique dans les tableaux de bord IA/BI.