Partager via


Informations de référence sur la syntaxe YAML de l’affichage des métriques

Cette page explique la grammaire YAML complète pour les vues de métriques. Les définitions d’affichage des métriques suivent la syntaxe de notation YAML standard.

Pour connaître les exigences minimales en matière de version du runtime et de la spécification YAML pour chaque fonctionnalité, consultez la disponibilité des fonctionnalités d’affichage des métriques.

Consultez la documentation de la spécification YAML 1.2.2 pour en savoir plus sur les spécifications YAML.

Vue d’ensemble de YAML

La définition YAML pour une vue de métrique comprend les champs de niveau supérieur suivants :

Champ Obligatoire Type Description
version Obligatoire Chaîne Version de la spécification de la vue de métrique. Consultez les versions de spécification YAML.
comment Optional Chaîne Description de l’affichage des métriques.
source Obligatoire Chaîne Données sources de la vue de métrique. Il peut s’agir de n’importe quelle ressource de catalogue Unity semblable à une table, y compris une vue de métrique ou une requête SQL. Voir Source.
filter Optional Chaîne Expression booléenne SQL qui s’applique à toutes les requêtes. Voir Filtre.
joins Optional Array Schéma en étoile et jointures de schéma flocons. Voir Jointures.
dimensions Conditionnelle Array Définitions de dimension, notamment le nom, l’expression et les métadonnées sémantiques facultatives. Obligatoire si aucun n’est measures spécifié. Voir Dimensions.
measures Conditionnelle Array Définitions de mesure, notamment le nom, l’expression d’agrégation et les métadonnées sémantiques facultatives. Obligatoire si aucun n’est dimensions spécifié. Voir Mesures.
materialization Optional Object Configuration pour accélérer les requêtes avec des vues matérialisées. Inclut la planification d’actualisation et les définitions de vue matérialisées. Voir Matérialisation.

Origine

Le source champ spécifie la source de données de la vue métrique. Vous pouvez utiliser une ressource de type table, telle que des tables, des vues et des vues de métriques, ou une requête SQL comme source. La composabilité s’applique aux vues de métriques. Lorsque vous utilisez une vue de métrique comme source, vous pouvez référencer ses dimensions et ses mesures dans la nouvelle vue de métrique. Consultez Composabilité.

Source de ressource de type table

Référencez une ressource de type table à l’aide de son nom en trois parties :

source: catalog.schema.source_table

Source de requête SQL

Pour utiliser une requête SQL, écrivez le texte de la requête directement dans yaML :

source: SELECT * FROM samples.tpch.orders o
  LEFT JOIN samples.tpch.customer c
  ON o.o_custkey = c.c_custkey

Note

Lorsque vous utilisez une requête SQL comme source avec une JOIN clause, définissez des contraintes de clé primaire et étrangère sur des tables sous-jacentes et utilisez l’option pour optimiser les RELY performances des requêtes. Pour plus d’informations, consultez Déclarer les relations de clé primaire et de clé étrangère et l’optimisation des requêtes à l’aide de contraintes de clé primaire.

Filtrer

Un filtre dans la définition YAML s’applique à toutes les requêtes qui référencent la vue de métrique. Écrire des filtres en tant qu’expressions booléennes SQL.

# Single condition filter
filter: o_orderdate > '2024-01-01'

# Multiple conditions with AND
filter: o_orderdate > '2024-01-01' AND o_orderstatus = 'F'

# Multiple conditions with OR
filter: o_orderpriority = '1-URGENT' OR o_orderpriority = '2-HIGH'

# Complex filter with IN clause
filter: o_orderstatus IN ('F', 'P') AND o_orderdate >= '2024-01-01'

# Filter with NOT
filter: o_orderstatus != 'O' AND o_totalprice > 1000.00

# Filter with LIKE pattern matching
filter: o_comment LIKE '%express%' AND o_orderdate > '2024-01-01'

Joins

Les jointures dans les vues de métriques prennent en charge les jointures directes d’une table de faits à des tables de dimension (schéma en étoile) et des jointures à plusieurs tronçons entre des tables de dimension normalisées (schémas flocons de neige). Vous pouvez également vous joindre à une requête SQL à l’aide d’une SELECT instruction. Consultez Utiliser une requête SQL comme source.

Note

Les tables jointes ne peuvent pas inclure de MAP colonnes de type. Pour décompresser des valeurs à partir de colonnes de MAP type, consultez Explosion des éléments imbriqués à partir d’une carte ou d’un tableau.

Chaque définition de jointure inclut les champs suivants :

Champ Obligatoire Type Description
name Obligatoire Chaîne Alias pour la table jointe ou la requête SQL. Utilisez cet alias lors du référencement de colonnes de la table jointe dans des dimensions ou des mesures.
source Obligatoire Chaîne Nom en trois parties de la table à joindre. Il peut également s’agir d’une requête SQL.
on Conditionnelle Chaîne Expression booléenne définissant la condition de jointure. Obligatoire s’il using n’est pas spécifié.
using Conditionnelle Array Liste des noms de colonnes présents dans la table parente et la table jointe. Obligatoire s’il on n’est pas spécifié.
joins Optional Array Liste des définitions de jointure imbriquées pour la modélisation de schéma flocon. Consultez la disponibilité des fonctionnalités d’affichage des métriques pour connaître la configuration minimale requise pour le runtime.

Jointures de schéma en étoile

Dans un schéma en étoile, source est la table des faits et est reliée à une ou plusieurs tables de dimension à l’aide d’un LEFT OUTER JOIN. Les vues de métriques rejoignent les tables de faits et de dimension nécessaires pour la requête spécifique, en fonction des colonnes sélectionnées.

Spécifiez des colonnes de jointure à l’aide d’une clause ou d’une ONUSING clause :

  • Clause ON : utilise une expression booléenne pour définir la condition de jointure.
  • Clause USING : répertorie les colonnes portant le même nom dans la table parente et la table jointe.

La jointure doit suivre une relation de plusieurs-à-un. Dans les cas de relations de plusieurs-à-plusieurs, la première ligne correspondante de la table de dimension jointe est sélectionnée.

version: 1.1
source: samples.tpch.lineitem

joins:
  - name: orders
    source: samples.tpch.orders
    on: source.l_orderkey = orders.o_orderkey

  - name: part
    source: samples.tpch.part
    on: source.l_partkey = part.p_partkey

dimensions:
  - name: Order Status
    expr: orders.o_orderstatus

  - name: Part Name
    expr: part.p_name

measures:
  - name: Total Revenue
    expr: SUM(l_extendedprice * (1 - l_discount))

  - name: Line Item Count
    expr: COUNT(1)

Note

L’espace source de noms référence les colonnes de la source de la vue de métrique, tandis que les name jointures font référence à des colonnes de cette table jointe. Par exemple, dans source.l_orderkey = orders.o_orderkey, source fait référence à lineitem la table jointe et orders fait référence à la table jointe. Si aucun préfixe n’est fourni dans une on clause, la référence correspond par défaut à la table jointe.

Jointures de schéma Snowflake

Un schéma flocon étend un schéma en étoile en normalisant les tables de dimension et en les connectant à des sous-dimensions. Cela crée une structure de jointure à plusieurs niveaux. Consultez la disponibilité des fonctionnalités d’affichage des métriques pour connaître la configuration minimale requise pour le runtime.

Pour définir un schéma flocon de neige, imbriquez joins à l’intérieur d’une définition de jointure parente :

version: 1.1
source: 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

dimensions:
  - name: customer_nation
    expr: customer.nation.n_name

Dimensions

Les dimensions sont des colonnes utilisées dans les clauses SELECT, WHERE et GROUP BY à l'heure de la requête. Chaque expression doit retourner une valeur scalaire. Les dimensions peuvent référencer des colonnes à partir des données sources ou des dimensions définies précédemment dans la vue métrique.

Chaque définition de dimension inclut les champs suivants :

Champ Obligatoire Type Description
name Obligatoire Chaîne Alias de colonne pour la dimension.
expr Obligatoire Chaîne Expression SQL qui peut référencer des colonnes à partir des données sources ou d’une dimension définie précédemment.
comment Optional Chaîne Description de la dimension. Apparaît dans le catalogue Unity et les outils de documentation.
display_name Optional Chaîne Étiquette lisible par l’homme qui apparaît dans les outils de visualisation. Limitées à 255 caractères. Nécessite la spécification YAML 1.1. Consultez la disponibilité des fonctionnalités d’affichage des métriques.
format Optional Carte Spécification de format pour la façon dont les valeurs doivent être affichées. Nécessite la spécification YAML 1.1. Consultez les spécifications de format.
synonyms Optional Array Autres noms pour les outils LLM pour découvrir la dimension. Jusqu’à 10 synonymes, chacun limité à 255 caractères. Nécessite la spécification YAML 1.1. Voir Synonymes.

Exemple :

dimensions:
  # Basic dimension
  - name: order_date
    expr: o_orderdate
    comment: 'Date the order was placed'
    display_name: 'Order Date'

  # Dimension with SQL expression
  - name: order_month
    expr: DATE_TRUNC('MONTH', o_orderdate)
    display_name: 'Order Month'

  # Dimension with synonyms
  - name: order_status
    expr: CASE
      WHEN o_orderstatus = 'O' THEN 'Open'
      WHEN o_orderstatus = 'P' THEN 'Processing'
      WHEN o_orderstatus = 'F' THEN 'Fulfilled'
      END
    display_name: 'Order Status'
    synonyms: ['status', 'fulfillment status']

Mesures

Les mesures sont des expressions qui produisent des résultats sans niveau prédéfinis d’agrégation. Ils doivent être exprimés à l’aide de fonctions d’agrégation. Pour référencer une mesure dans une requête, utilisez la MEASURE fonction. Les mesures peuvent référencer des champs de base dans les données sources, les dimensions définies précédemment ou les mesures définies précédemment.

Chaque définition de mesure inclut les champs suivants :

Champ Obligatoire Type Description
name Obligatoire Chaîne Alias de la mesure.
expr Obligatoire Chaîne Expression SQL d’agrégation qui inclut des fonctions d’agrégation SQL.
comment Optional Chaîne Description de la mesure. Apparaît dans le catalogue Unity et les outils de documentation.
display_name Optional Chaîne Étiquette lisible par l’homme qui apparaît dans les outils de visualisation. Limitées à 255 caractères. Nécessite la spécification YAML 1.1. Consultez la disponibilité des fonctionnalités d’affichage des métriques.
format Optional Carte Spécification de format pour la façon dont les valeurs doivent être affichées. Nécessite la spécification YAML 1.1. Consultez les spécifications de format.
synonyms Optional Array Autres noms pour les outils LLM pour découvrir la mesure. Jusqu’à 10 synonymes, chacun limité à 255 caractères. Nécessite la spécification YAML 1.1. Consultez la disponibilité des fonctionnalités d’affichage des métriques.
window Optional Array Spécifications de fenêtre pour les agrégations fenêtrés, cumulatives ou semi-additives. Lorsqu’elle n’est pas spécifiée, la mesure se comporte comme un agrégat standard. Voir les mesures de fenêtre.

Consultez les fonctions d’agrégation pour obtenir la liste des fonctions d’agrégation.

Exemple :

measures:
  # Simple count measure
  - name: order_count
    expr: COUNT(1)
    display_name: 'Order Count'

  # Sum aggregation measure with synonyms
  - name: total_revenue
    expr: SUM(o_totalprice)
    comment: 'Gross revenue from all orders'
    display_name: 'Total Revenue'
    synonyms: ['revenue', 'total sales']

  # Distinct count measure
  - name: unique_customers
    expr: COUNT(DISTINCT o_custkey)
    display_name: 'Unique Customers'

  # Calculated measure combining multiple aggregations
  - name: avg_order_value
    expr: SUM(o_totalprice) / COUNT(DISTINCT o_orderkey)
    display_name: 'Avg Order Value'
    synonyms: ['AOV', 'average order']

  # Filtered measure with WHERE condition
  - name: open_order_revenue
    expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
    display_name: 'Open Order Revenue'
    synonyms: ['backlog', 'outstanding revenue']

Mesures de fenêtre

Important

Cette fonctionnalité est expérimentale.

Le window champ définit des agrégations fenêtrés, cumulatives ou semi-additives pour les mesures. Pour plus d’informations sur les mesures de fenêtre et les cas d’usage, consultez Les mesures de fenêtre.

Chaque spécification de fenêtre comprend les champs suivants :

Champ Obligatoire Type Description
order Obligatoire Chaîne Dimension qui détermine l’ordre de la fenêtre.
range Obligatoire Chaîne Étendue de la fenêtre. Valeurs prises en charge :
  • current: Lignes où la valeur de classement de la fenêtre est égale à la valeur de la ligne actuelle.
  • cumulative: toutes les lignes où la valeur de classement des fenêtres est inférieure ou égale à la valeur de la ligne actuelle.
  • trailing <value> <unit>: lignes de la ligne actuelle en arrière par les unités de temps spécifiées (par exemple, trailing 7 day). N’inclut pas l’unité actuelle.
  • leading <value> <unit>: lignes de la ligne actuelle vers l’avant par les unités de temps spécifiées (par exemple, leading 3 month). N’inclut pas l’unité actuelle.
  • all: toutes les lignes, quelle que soit la valeur de classement de la fenêtre.
semiadditive Obligatoire Chaîne Méthode d’agrégation. Valeurs prises en charge : first ou last.

Exemple de mesure de fenêtre

L’exemple suivant calcule un nombre de 7 jours propagé de clients uniques :

version: 1.1
source: samples.tpch.orders

dimensions:
  - name: order_date
    expr: o_orderdate

measures:
  - name: rolling_7day_customers
    expr: COUNT(DISTINCT o_custkey)
    display_name: '7-Day Rolling Customers'
    window:
      - order: order_date
        range: trailing 7 day
        semiadditive: last

Matérialisation

Important

Cette fonctionnalité est expérimentale.

Le materialization champ configure l’accélération automatique des requêtes à l’aide de vues matérialisées. Pour plus d’informations sur le fonctionnement de la matérialisation, les exigences et les meilleures pratiques, consultez Matérialisation pour les vues de métriques.

Le materialization champ inclut les champs de niveau supérieur suivants :

Champ Obligatoire Type Description
schedule Obligatoire Chaîne Planification d’actualisation. Utilise la même syntaxe que la clause schedule sur les vues matérialisées. La clause TRIGGER ON UPDATE n'est pas prise en charge.
mode Obligatoire Chaîne Cette propriété doit être définie sur relaxed.
materialized_views Obligatoire Array Liste des vues matérialisées à matérialiser. Chaque entrée nécessite les champs décrits ci-dessous.

Chaque entrée materialized_views inclut les champs suivants :

Champ Obligatoire Type Description
name Obligatoire Chaîne Nom de la matérialisation.
type Obligatoire Chaîne Type de matérialisation. Valeurs prises en charge : aggregated (nécessite dimensions, ou measuresles deux) ou unaggregated.
dimensions Conditionnelle Array Liste des noms de dimension à matérialiser. Obligatoire si type c’est aggregated le cas et non measures spécifié.
measures Conditionnelle Array Liste des noms de mesures à matérialiser. Obligatoire si type c’est aggregated le cas et non dimensions spécifié.

Exemple de matérialisation

L’exemple suivant définit une vue de métrique avec plusieurs matérialisations :

version: 1.1
source: samples.tpch.orders

dimensions:
  - name: order_date
    expr: o_orderdate
  - name: order_status
    expr: o_orderstatus

measures:
  - name: total_revenue
    expr: SUM(o_totalprice)
  - name: order_count
    expr: COUNT(1)

materialization:
  schedule: every 6 hours
  mode: relaxed
  materialized_views:
    - name: baseline
      type: unaggregated

    - name: daily_status_metrics
      type: aggregated
      dimensions:
        - order_date
        - order_status
      measures:
        - total_revenue
        - order_count

Références de nom de colonne

Lorsque vous référencez des noms de colonnes qui contiennent des espaces ou des caractères spéciaux dans des expressions YAML, placez le nom de colonne entre guillemets inversés pour échapper à l’espace ou au caractère. Si l’expression commence par un accent grave et sert directement de valeur YAML, mettez l’expression entière entre guillemets doubles. Les valeurs YAML valides ne peuvent pas commencer par un accent grave.

Exemples de mise en forme

Utilisez les exemples suivants pour apprendre à mettre en forme YAML correctement dans les scénarios courants.

Référencer un nom de colonne

Le tableau suivant montre comment mettre en forme les noms de colonnes en fonction des caractères qu’ils contiennent.

Cas Nom(s) de colonne source Expression(s) de référence Remarques
Aucun espace revenue expr: "revenue"
expr: 'revenue'
expr: revenue
Utilisez des guillemets doubles, des guillemets simples ou pas de guillemets autour du nom de la colonne.
Avec des espaces First Name expr: "`First Name`" Utilisez des accents graves comme caractères d’échappement des espaces. Placez l’expression entière entre guillemets doubles.
Nom de colonne avec des espaces dans une expression SQL First Name et Last Name expr: CONCAT(`First Name`, , `Last Name`) Si l’expression ne commence pas par des accents graves, les guillemets doubles ne sont pas nécessaires.
Les guillemets sont inclus dans le nom de la colonne source "name" expr: '`"name"`' Utilisez des accents graves comme caractères d’échappement des guillemets doubles dans le nom de la colonne. Placez cette expression entre guillemets simples dans la définition YAML.

Utiliser des expressions avec des deux-points

Cas Expression Remarques
Expressions avec deux-points expr: "CASE WHEN `Customer Tier` = 'Enterprise: Premium' THEN 1 ELSE 0 END" Encapsuler l’expression entière entre guillemets doubles pour une interprétation correcte

Note

YAML interprète les deux-points sans guillemets comme des séparateurs clé-valeur. Utilisez toujours des guillemets doubles autour des expressions qui incluent des points-virgules.

Indentation sur plusieurs lignes

Cas Expression Remarques
Indentation sur plusieurs lignes expr: \|
CASE WHEN
revenue > 100 THEN 'High'
ELSE 'Low'
END
Indenter l'expression sous la première ligne

Note

Utilisez le | scalaire de bloc après expr: pour les expressions multilignes. Toutes les lignes doivent être indentées d'au moins deux espaces au-delà de la clé expr pour une analyse correcte.

Mettre à niveau votre YAML vers la version 1.1

La mise à niveau d’une vue de métrique vers la version 1.1 de la spécification YAML nécessite des soins, car les commentaires sont gérés différemment des versions antérieures.

Types de commentaires

  • Commentaires YAML (#) : commentaires inline ou monolignes écrits directement dans le fichier YAML à l’aide du symbole #.
  • Commentaires du catalogue Unity : commentaires stockés dans le catalogue Unity pour l’affichage des métriques ou ses colonnes (dimensions et mesures). Elles sont distinctes des commentaires YAML.

Considérations relatives à la mise à niveau

Choisissez le chemin de mise à niveau qui correspond à la façon dont vous souhaitez gérer les commentaires dans votre vue de métrique. Les options suivantes décrivent les approches disponibles et fournissent des exemples.

Option 1 : Conserver les commentaires YAML à l’aide de notebooks ou de l’éditeur SQL

Si votre vue de métrique contient des commentaires YAML (#) que vous souhaitez conserver, procédez comme suit :

  1. Utilisez la ALTER VIEW commande dans un bloc-notes ou un éditeur SQL.
  2. Copiez la définition YAML d’origine dans la $$..$$ section après AS. Remplacez la valeur de version par 1.1.
  3. Enregistrez la vue des métriques.
ALTER VIEW metric_view_name AS
$$
# The notebook preserves inline comments
version: 1.1
source: samples.tpch.orders
dimensions:
- name: order_date # The notebook preserves inline comments
  expr: o_orderdate
measures:
# The notebook preserves commented out definitions
# - name: total_orders
#   expr: COUNT(o_orderid)
- name: total_revenue
  expr: SUM(o_totalprice)
$$

Avertissement

L’exécution ALTER VIEW supprime les commentaires du catalogue Unity, sauf s’ils sont explicitement inclus dans les comment champs de la définition YAML. Pour conserver les commentaires affichés dans le catalogue Unity, consultez l’option 2.

Option 2 : Conserver les commentaires du catalogue Unity

Note

Les instructions suivantes s’appliquent uniquement lors de l’utilisation de la ALTER VIEW commande dans un notebook ou un éditeur SQL. Si vous mettez à niveau votre vue métrique vers la version 1.1 à l’aide de l’interface utilisateur de l’éditeur YAML, l’interface utilisateur de l’éditeur YAML conserve automatiquement vos commentaires du catalogue Unity.

  1. Copiez tous les commentaires du catalogue Unity dans les champs appropriés comment de votre définition YAML. Remplacez la valeur de version par 1.1.
  2. Enregistrez la vue des métriques.
ALTER VIEW metric_view_name AS
$$
version: 1.1
source: samples.tpch.orders
comment: "Metric view of order (Updated comment)"

dimensions:
- name: order_date
  expr: o_orderdate
  comment: "Date of order - Copied from Unity Catalog"

measures:
- name: total_revenue
  expr: SUM(o_totalprice)
  comment: "Total revenue"
$$

Pour connaître l’historique des versions de spécification YAML et les exigences minimales du runtime pour chaque fonctionnalité, consultez la disponibilité des fonctionnalités d’affichage des métriques.