Partager via


Utiliser des jointures dans les vues de métriques

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 les jointures passant de la table de faits aux tables de dimension, puis aux tables de sous-dimension, ce qui permet de joindre plusieurs sauts à travers des tables de dimension normalisées (schémas en flocon de neige). Cette page explique comment définir des jointures dans la définition YAML d’une vue de métrique.

Note

Les tables jointes ne peuvent pas inclure de MAP colonnes de type. Pour savoir comment 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.

Schémas en étoile de modèle

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 dimensions et des mesures sélectionnées.

Spécifiez des colonnes de jointure dans une vue de métriques à l’aide d’une clause ON ou d’une clause USING.

  • ON clause : utilise une expression booléenne pour définir la condition de jointure.
  • USING clause : répertorie les colonnes portant le même nom dans la table parente et la table jointe. Pour les jointures de premier niveau, le parent est la source de la vue de métriques. Pour les jointures imbriquées dans un schéma flocon de neige, le parent est la jointure en amont immédiate.

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.

Note

Les analyseurs YAML 1.1 (tels que PyYAML) peuvent mal interpréter certaines clés non mises en guillemets, telles que on, , off, yesno, ou , en NOtant que valeurs booléennes. Cela peut entraîner des erreurs de jointure. Pour éviter ce problème, habillage de ces clés entre guillemets. Par exemple : 'on': source.dim_fk = dim.pk

source: catalog.schema.fact_table

joins:

  # The on clause supports a boolean expression
  - name: dimension_table_1
    source: catalog.schema.dimension_table_1
    on: source.dimension_table_1_fk = dimension_table_1.pk

  # The using clause supports an array of columns
  # found in both of the tables being joined.
  - name: dimension_table_2
    source: catalog.schema.dimension_table_2
    using:
      - dimension_table_2_key_a
      - dimension_table_2_key_b

dimensions:

  # Dimension referencing a join column from dimension_table_1 using dot notation
  - name: Dimension table 1 key
    expr: dimension_table_1.pk

measures:

  # Measure referencing a join column from dimension_table_1
  - name: Count of dimension table 1 keys
    expr: COUNT(dimension_table_1.pk)

Note

Le namespace source fait référence aux colonnes de la source de la vue métrique, tandis que le join name fait référence aux colonnes de la table jointe. Par exemple, dans la condition source.dimension_table_1_fk = dimension_table_1.pkde jointure , source fait référence à la table source de la vue de métrique (fact_table) et dimension_table_1 fait référence à la table jointe. Par défaut, la référence se rapporte à la table de jointure si aucun préfixe n’est fourni dans la clause on.

Schéma flocon modèle

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 qui peut correspondre à la profondeur de votre modèle de données.

Note

Les jointures Snowflake nécessitent l'exécution de Databricks Runtime 17.1 et versions ultérieures.

Pour définir une jointure qui modélise un schéma flocon de neige :

  1. Créez une vue des métriques.
  2. Ajoutez des jointures de niveau supérieur (schéma en étoile).
  3. Joignez-vous à d’autres tables de dimension.
  4. Affichez les dimensions imbriquées en ajoutant des dimensions dans votre vue.

L’exemple suivant utilise le jeu de données TPCH pour illustrer comment modéliser un schéma flocon. Le jeu de données TPCH est accessible dans le samples catalogue dans votre espace de travail Azure Databricks.

source: samples.tpch.orders

joins:
  - name: customer
    source: samples.tpch.customer
    on: source.o_custkey = customer.c_custkey
    joins:
      - name: nation
        source: samples.tpch.nation
        on: customer.c_nationkey = nation.n_nationkey
        joins:
          - name: region
            source: samples.tpch.region
            on: nation.n_regionkey = region.r_regionkey

dimensions:
  - name: clerk
    expr: o_clerk
  - name: customer
    expr: customer # returns the full customer row as a struct
  - name: customer_name
    expr: customer.c_name
  - name: nation
    expr: customer.nation
  - name: nation_name
    expr: customer.nation.n_name