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 champsscd_valid_from
etscd_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
- Sur la page Versions des dimensions à évolution lente, copiez l'URL
.tar.gz
de la dernière version. - Créez un dépôt Dataform.
- Créez et initialisez un espace de travail dans le dépôt.
- 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:
Dans le volet Fichiers, à côté de
definitions/
, cliquez sur le menu Plus.Cliquez sur Créer un fichier.
Dans le volet Créer un fichier, procédez comme suit :
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
.Cliquez sur Créer un fichier.
Dans le volet Fichiers, sélectionnez le
.js
que vous venez de créer. fichier YAMLImportez 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
.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
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
- Pour découvrir comment créer des tables incrémentielles dans Dataform, consultez la section Configurer une table incrémentielle.
- Pour en savoir plus sur les packages dans Dataform avec les inclusions JavaScript, consultez la section Présentation de JavaScript dans Dataform.
- Pour savoir comment créer votre propre package et l'utiliser dans Dataform, consultez la section Créer un package.