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 champsscd_valid_from
etscd_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
- Sur la page des 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 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:
Dans le volet Fichiers, à côté de
definitions/
, cliquez sur le menu Plus.Cliquez sur Créer un fichier.
Dans le volet Create new file (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 fichier
.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 le nom de la constante, par exemple,
scd
.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
(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
- Pour savoir comment créer des tables incrémentielles dans Dataform, consultez Configurer une table incrémentielle.
- Pour en savoir plus sur les packages inclus dans Dataform avec JavaScript, consultez la page Présentation de JavaScript dans Dataform.
- Pour savoir comment créer votre propre package et l'utiliser dans Dataform, consultez la page Créer un package dans Dataform.