Utiliser des dimensions à évolution lente dans Dataform

Ce document explique comment utiliser le package Open Source "Dimensions à évolution lente" dans Dataform, à titre d'exemple d'utilisation d'un package Open Source.

Le package de dimensions à évolution lente contient des modèles de données courants pour créer des tables de dimensions à évolution lente de type 2 à partir de sources de données modifiables dans Dataform.

Les tables de dimensions à évolution lente sont des tables incrémentielles qui contiennent des données pouvant changer de manière imprévisible, et non selon un calendrier régulier, comme les clients ou les produits. Dans une table de dimensions à évolution lente de type 2, les nouvelles données sont ajoutées dans une nouvelle ligne sans écraser les lignes existantes. L'historique de la table est conservé dans plusieurs enregistrements pour une clé donnée dans la clé de dimension à évolution lente. Chaque enregistrement possède une clé unique.

Le package "Dimensions à évolution lente" crée les relations suivantes dans BigQuery pour un NAME donné:

  • NAME : vue avec des champs scd_valid_from et scd_valid_to
  • NAME_updates : table incrémentielle qui stocke l'historique des modifications de la table source

Dataform met à jour les dimensions à évolution lente chaque fois qu'il exécute une table incrémentielle de dimensions à évolution lente. Vous pouvez planifier l'exécution du tableau des dimensions à évolution lente tous les jours ou toutes les heures, en fonction de la granularité des modifications que vous souhaitez capturer.

Pour découvrir comment planifier des exécutions Dataform, consultez Planifier des exécutions avec Cloud Composer ou Planifier des exécutions avec des workflows et Cloud Scheduler.

Avant de commencer

  1. Sur la page Versions des dimensions à évolution lente, copiez l'URL .tar.gz de la dernière version.
  2. Créez un dépôt Dataform.
  3. Créez et initialisez un espace de travail dans le dépôt.
  4. Installez le package "Dimensions à évolution lente" dans votre dépôt Dataform.

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer un package, demandez à votre administrateur de vous accorder le rôle IAM Éditeur Dataform (roles/dataform.editor) sur les espaces de travail. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Créer une table de dimensions à évolution lente avec le package "Dimensions à évolution lente"

Pour créer un tableau de dimensions à évolution lente avec le package de dimensions à évolution lente dans Dataform, procédez comme suit:

  1. Dans le volet Fichiers, à côté de definitions/, cliquez sur le menu Plus.

  2. Cliquez sur Créer un fichier.

  3. Dans le volet Créer un fichier, procédez comme suit :

    1. Dans le champ Ajouter un chemin d'accès au fichier, après definitions/, saisissez le nom du fichier suivi de .js. Par exemple, definitions/definitions.js.

    2. Cliquez sur Créer un fichier.

  4. Dans le volet Fichiers, sélectionnez le .js que vous venez de créer. fichier YAML

  5. Importez le package dans le fichier au format suivant:

     const CONSTANT-NAME = require("dataform-scd");
    

    Remplacez CONSTANT-NAME par un nom pour la constante, par exemple scd.

  6. Créez des tables de dimensions à évolution lente au format suivant:

    scd("source_data_scd", {
      uniqueKey: "UNIQUE_ID",
      timestamp: "UPDATED_AT", // A field that stores a timestamp or date of when the row was last changed.
      source: {
        schema: "SOURCE_SCHEMA",     // The source table to build slowly changing dimensions from.
        name: "SOURCE_SCHEMA_NAME",
      },
      incrementalConfig: {        // Any configuration parameters to apply to the incremental table that will be created.
        bigquery: {
          partitionBy: "UPDATED_AT",
        },
      },
    });
    

    Remplacez les éléments suivants :

    • UNIQUE_ID: identifiant unique des lignes de la table
    • UPDATED_AT: nom du champ qui stocke un code temporel ou la date de la dernière modification de la ligne, par exemple updated_at.
    • SOURCE_SCHEMA: schéma de la table source, par exemple dataform_scd_example
    • SOURCE_SCHEMA_NAME: nom de la table source, par exemple source_data
  7. Facultatif: cliquez sur Format.

L'exemple de code suivant montre une définition de table de dimensions à évolution lente créée avec le package "Dimensions à évolution lente" :

const scd = require("dataform-scd");

/**
 * Create an SCD table on top of the table defined in source_data.sqlx.
 */
const { updates, view } = scd("source_data_scd", {
  // A unique identifier for rows in the table.
  uniqueKey: "user_id",
  // A field that stores a timestamp or date of when the row was last changed.
  timestamp: "updated_at",
  // The source table to build slowly changing dimensions from.
  source: {
    schema: "dataform_scd_example",
    name: "source_data",
  },
  // Any tags that will be added to actions.
  tags: ["slowly-changing-dimensions"],
  // Documentation of table columns
  columns: {user_id: "User ID", some_field: "Data Field", updated_at: "Timestamp for updates"},
  // Configuration parameters to apply to the incremental table that will be created.
  incrementalConfig: {
    bigquery: {
      partitionBy: "updated_at",
    },
  },
});

// Additional customization of the created models can be done by using the returned actions objects.
updates.config({
  description: "Updates table for SCD",
});

Étape suivante