Utiliser des dimensions à évolution lente dans Dataform

Ce document vous explique comment utiliser le package Open Source de 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 de type 2 à évolution lente à 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 qui peuvent changer de manière imprévisible, et non à intervalles réguliers, comme les clients ou les produits. Dans une table de dimensions de type 2 à évolution lente, les nouvelles données sont ajoutées dans une nouvelle ligne sans écraser les lignes existantes. L'historique des tables 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 de 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 des dimensions à évolution lente chaque fois qu'il exécute une table incrémentielle de dimensions lentement. Vous pouvez planifier l'exécution de la table de dimensions à évolution lente pour qu'elle s'exécute tous les jours ou toutes les heures, en fonction du niveau de précision des modifications que vous souhaitez capturer.

Pour savoir comment planifier des exécutions Dataform, consultez la page Planifier des exécutions avec Cloud Composer ou Planifier des exécutions avec Workflows et Cloud Scheduler.

Avant de commencer

  1. Sur la page des 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 de dimensions lentes dans votre dépôt Dataform.

Rôles requis

Afin d'obtenir les autorisations nécessaires pour configurer un package, demandez à votre administrateur de vous attribuer 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 section Gérer les accès.

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

Créer un tableau de dimensions à évolution lente avec le package de dimensions à évolution lente

Pour créer une table de dimensions à évolution lente avec le package de packages 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 Create new file (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 fichier .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 le nom de la constante, par exemple, scd.

  6. Créez des tableaux de dimensions qui changent lentement, 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 horodatage 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 de 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",
});

Étapes suivantes