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 camposscd_valid_from
escd_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
- Na página de versões de dimensões com alterações lentas,
copie o URL
.tar.gz
da versão mais recente. - Crie um repositório do Dataform.
- Crie e inicialize um espaço de trabalho no repositório.
- 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:
No painel Files, ao lado de
definitions/
, clique no menu More.Clique em Criar arquivo.
No painel Criar novo arquivo, faça o seguinte:
No campo Add a file path, depois de
definitions/
, insira o nome do arquivo seguido de.js
. Por exemplo,definitions/definitions.js
.Clique em Criar arquivo.
No painel Files, selecione o
.js
recém-criado. main.tf.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
.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
.
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
- Para saber como criar tabelas incrementais no Dataform, consulte Configurar uma tabela incremental.
- Para saber mais sobre pacotes no Dataform com JavaScript, consulte Introdução ao JavaScript no Dataform.
- Para saber como criar seu próprio pacote e usá-lo no Dataform, consulte Criar um pacote no Dataform.