O pacote de dimensões que mudam lentamente contém modelos de dados comuns para criar tabelas de dimensões que mudam lentamente de tipo 2 a partir de fontes de dados mutáveis no Dataform.
As tabelas de dimensões de mudança lenta são tabelas incrementais que contêm dados que podem mudar de forma imprevisível, não em uma programação regular, como clientes ou produtos. Em uma tabela de dimensões de mudança lenta do tipo 2, os novos dados são anexados em uma nova linha sem substituir as linhas de tabela atuais. 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 um determinado NAME
:
NAME
: uma visualização com 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 as dimensões com alterações lentas sempre que executa uma tabela incremental de dimensões com alterações lentas. Talvez você queira programar a tabela de dimensões que mudam lentamente para ser executada todos os dias ou a cada hora, dependendo da granularidade das mudanças 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 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 alterações lentas no repositório do Dataform.
Funções exigidas
Para receber as permissões necessárias para configurar um pacote, peça ao administrador que conceda a você o papel do IAM Editor de formulários de dados (roles/dataform.editor
) nos espaços de trabalho.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.
Criar uma tabela de dimensões com alterações lentas com o pacote de dimensões com alterações lentas
Para criar uma tabela de dimensões com alterações lentas com o pacote de dimensões com alterações lentas no Dataform, siga estas etapas:
No painel Files, ao lado de
definitions/
, clique no menu More.Selecione Criar arquivo.
No painel Criar novo arquivo, faça o seguinte:
No campo Adicionar um caminho de arquivo, depois de
definitions/
, digite o nome do arquivo seguido de.js
. Por exemplo,definitions/definitions.js
.Selecione 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 alterações 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 uma data de quando a linha foi alterada pela última vez, 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 Formato.
O exemplo de código a seguir mostra uma definição de tabela de dimensões com alterações lentas criada com o pacote de dimensões com alterações lentas:
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.