El paquete de dimensiones que cambian con lentitud contiene modelos de datos comunes para crear tablas de dimensiones que cambian con lentitud de tipo 2 a partir de fuentes de datos mutables en Dataform.
Las tablas de dimensiones de cambio lento son tablas incrementales que contienen datos que pueden cambiar de forma impredecible, no de forma periódica, como los clientes o los productos. En una tabla de dimensiones de cambio lento de tipo 2, los datos nuevos se agregan a una fila nueva sin reemplazar las filas existentes. El historial de la tabla se conserva en varios registros para una clave determinada en la clave de dimensión que cambia con lentitud. Cada registro tiene una clave única.
El paquete de dimensiones que cambian lentamente crea las siguientes relaciones en BigQuery para un NAME
determinado:
NAME
: Una vista con camposscd_valid_from
yscd_valid_to
NAME_updates
: Es una tabla incremental que almacena el historial de cambios de la tabla de origen.
Dataform actualiza las dimensiones que cambian lentamente cada vez que ejecuta una tabla incremental de dimensiones que cambian lentamente. Te recomendamos que programes la tabla de dimensiones que cambia lentamente para que se ejecute todos los días o cada hora, según el nivel de detalle de los cambios que deseas capturar.
Para obtener información sobre cómo programar ejecuciones de Dataform, consulta Cómo programar ejecuciones con Cloud Composer o Cómo programar ejecuciones con Workflows y Cloud Scheduler.
Antes de comenzar
- En la página de lanzamientos de dimensiones que cambian lentamente, copia la URL de
.tar.gz
de la versión más reciente. - Crea un repositorio de Dataform.
- Crea e inicializa un espacio de trabajo en el repositorio.
- Instala el paquete de dimensiones que cambian lentamente en tu repositorio de Dataform.
Roles obligatorios
Para obtener los permisos que necesitas para configurar un paquete, pídele a tu administrador que te otorgue el rol de IAM Editor de formularios de datos (roles/dataform.editor
) en los espacios de trabajo.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Crea una tabla de dimensiones que cambian lentamente con el paquete de dimensiones que cambian lentamente
Para crear una tabla de dimensiones que cambian lentamente con el paquete de dimensiones que cambian lentamente en Dataform, sigue estos pasos:
En el panel Archivos, junto a
definitions/
, haz clic en el menú Más.Haz clic en Crear archivo.
En el panel Crear un archivo nuevo, haz lo siguiente:
En el campo Agregar una ruta de archivo, después de
definitions/
, ingresa el nombre del archivo seguido de.js
. Por ejemplo,definitions/definitions.js
Haz clic en Crear archivo.
En el panel Files, selecciona el
.js
que acabas de crear. en el archivo de especificación.Importa el paquete al archivo con el siguiente formato:
const CONSTANT-NAME = require("dataform-scd");
Reemplaza CONSTANT-NAME por un nombre para la constante, por ejemplo,
scd
.Crea tablas de dimensiones que cambian lentamente con el siguiente formato:
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", }, }, });
Reemplaza lo siguiente:
- UNIQUE_ID: Es un identificador único para las filas de la tabla.
- UPDATED_AT: Es un nombre para el campo que almacena una marca de tiempo o la fecha de la última vez que se cambió la fila, por ejemplo,
updated_at
. - SOURCE_SCHEMA: Es el esquema de la tabla fuente, por ejemplo,
dataform_scd_example
. - SOURCE_SCHEMA_NAME: Es el nombre de la tabla de origen, por ejemplo,
source_data
.
Opcional: Haz clic en Formato.
En la siguiente muestra de código, se muestra una definición de tabla de dimensiones que cambian lentamente creada con el paquete de dimensiones que cambian lentamente:
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",
});
¿Qué sigue?
- Para aprender a crear tablas incrementales en Dataform, consulta Cómo configurar una tabla incremental.
- Para obtener más información sobre los paquetes en Dataform con JavaScript, consulta Introducción a JavaScript en Dataform.
- Para aprender a crear tu propio paquete y usarlo en Dataform, consulta Cómo crear un paquete.