Usa dimensiones que cambian lentamente en Dataform

En este documento, se explica cómo usar el paquete de dimensiones de cambio lento de código abierto en Dataform como ejemplo del uso de un paquete de código abierto.

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 campos scd_valid_from y scd_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

  1. En la página de lanzamientos de dimensiones que cambian lentamente, copia la URL de .tar.gz de la versión más reciente.
  2. Crea un repositorio de Dataform.
  3. Crea e inicializa un espacio de trabajo en el repositorio.
  4. 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:

  1. En el panel Archivos, junto a definitions/, haz clic en el menú Más.

  2. Haz clic en Crear archivo.

  3. En el panel Crear un archivo nuevo, haz lo siguiente:

    1. 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

    2. Haz clic en Crear archivo.

  4. En el panel Files, selecciona el .js que acabas de crear. en el archivo de especificación.

  5. 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.

  6. 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.
  7. 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?