Usar dimensões que mudam lentamente no Dataform

Neste documento, mostramos como usar o pacote de dimensões de código aberto com mudanças lentas no Dataform como um exemplo de uso de um pacote de código aberto.

O pacote de dimensões com alterações lentas contém modelos de dados comuns para criar tabelas de dimensões do tipo 2 que mudam lentamente a partir de fontes de dados mutáveis no Dataform.

As tabelas de dimensões que são alteradas lentamente são tabelas incrementais com dados que podem mudar de maneira imprevisível, não em uma programação regular, como clientes ou produtos. Em uma tabela de dimensões do tipo 2 que muda lentamente, os novos dados são anexados em uma nova linha sem substituir as linhas da tabela. O histórico da tabela é preservado em vários registros para uma determinada chave na chave de dimensão que muda lentamente. Cada registro tem uma chave exclusiva.

O pacote de dimensões com alterações lentas cria as seguintes relações no BigQuery para uma determinada NAME:

  • NAME: visualização com os campos scd_valid_from e scd_valid_to.
  • NAME_updates: uma tabela incremental que armazena o histórico de alterações da tabela de origem

O Dataform atualiza dimensões com mudanças lentas sempre que executa uma tabela incremental de dimensões que muda lentamente. Programe uma tabela de dimensões que muda lentamente para ser executada todos os dias ou a cada hora, dependendo da granularidade das alterações que você quer capturar.

Para saber como programar execuções do Dataform, consulte Programar execuções com o Cloud Composer ou Programar execuções com o Workflows e o Cloud Scheduler.

Antes de começar

  1. Na página de versões de dimensões com alterações lentas, copie o URL .tar.gz da versão mais recente.
  2. Crie um repositório do Dataform.
  3. Crie e inicialize um espaço de trabalho no repositório.
  4. Instale o pacote de dimensões com mudanças lentas no repositório do Dataform.

Funções exigidas

Para receber as permissões necessárias para configurar um pacote, peça ao administrador para conceder a você o papel do IAM de Editor do Dataform (roles/dataform.editor) nos espaços de trabalho. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Talvez você também consiga receber as permissões necessárias por meio de papéis personalizados ou outros papéis predefinidos.

Criar uma tabela de dimensões com mudanças lentas usando o pacote de dimensões com mudanças lentas

Para criar uma tabela de dimensões com mudanças lentas usando o pacote de dimensões com mudanças lentas no Dataform, siga estas etapas:

  1. No painel Files, ao lado de definitions/, clique no menu More.

  2. Clique em Criar arquivo.

  3. No painel Criar novo arquivo, faça o seguinte:

    1. No campo Add a file path, depois de definitions/, insira o nome do arquivo seguido de .js. Por exemplo, definitions/definitions.js.

    2. Clique em Criar arquivo.

  4. No painel Files, selecione o .js recém-criado. main.tf.

  5. Importe o pacote para o arquivo no seguinte formato:

     const CONSTANT-NAME = require("dataform-scd");
    

    Substitua CONSTANT-NAME por um nome para a constante, por exemplo, scd.

  6. Crie tabelas de dimensões com mudanças lentas no seguinte 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",
        },
      },
    });
    

    Substitua:

    • UNIQUE_ID: um identificador exclusivo para linhas na tabela.
    • UPDATED_AT: um nome para o campo que armazena um carimbo de data/hora ou data da última alteração da linha, por exemplo, updated_at.
    • SOURCE_SCHEMA: o esquema da tabela de origem, por exemplo, dataform_scd_example.
    • SOURCE_SCHEMA_NAME: o nome da tabela de origem, por exemplo, source_data.
  7. Opcional: clique em Formatar.

O exemplo de código a seguir mostra uma definição de tabela de dimensões com mudanças lentas criada com o pacote de dimensões que muda 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",
});

A seguir