Este documento mostra como definir a relação entre objetos no seu Fluxo de trabalho SQL no Dataform declarando dependências.
É possível definir um relacionamento de dependência entre objetos de um fluxo de trabalho SQL. Em uma relação de dependência, a execução do objeto dependente depende a execução do objeto de dependência. Isso significa que o Dataform executa o dependente após a dependência. Você define a relação declarar dependências dentro do arquivo de definição SQLX do objeto dependente.
As declarações de dependência compõem uma árvore de dependências do fluxo de trabalho do SQL. que determina a ordem em que o Dataform executa seus objetos do fluxo de trabalho do SQL.
É possível definir a relação de dependência entre os seguintes Objetos de fluxo de trabalho SQL:
- Declarações da fonte de dados
- Declarações de fontes de dados do BigQuery que permitem fazer referência a essas origens de dados em definições de tabelas do Dataform e operações SQL. É possível definir uma declaração de fonte de dados como dependência, mas não como dependente.
- Tabelas
- Tabelas que você cria no Dataform com base nos dados declarados fontes ou outras tabelas em seu fluxo de trabalho SQL. O Dataform oferece suporte à seguintes tipos de tabela: tabela, tabela incremental, visualização e visualização materializada. É possível definir uma tabela como dependência e como dependente.
- Operações SQL personalizadas
- Instruções SQL que o Dataform executa no BigQuery no estado em que se encontram
sem modificação. É possível configurar uma operação SQL personalizada definida em um
type: operations
como dependência e como dependente. Para declarar um objeto operação SQL como dependência na funçãoref
, você precisa defina a propriedadehasOutput
comotrue
; no arquivo de definição SQLX da operação SQL personalizada. - Declarações
- Consultas de teste de qualidade de dados que podem ser usadas para testar dados em tabelas.
O Dataform executa declarações sempre que atualiza seu fluxo de trabalho SQL e
ele alertará você se alguma declaração falhar. Você pode configurar uma declaração definida em um
type: assertion
como dependência e como dependente, declarando dependências no blococonfig
.
É possível definir a relação de dependência das seguintes maneiras:
- Declare uma dependência usando a função principal
ref
do Dataform para fazer referência a ela em uma instruçãoSELECT
. - Declare uma lista de dependências no bloco
config
de um arquivo de definição do SQLX.
Antes de começar
- Crie e inicialize um espaço de trabalho de desenvolvimento no seu repositório.
- Opcional: declarar uma fonte de dados.
- Crie pelo menos dois objetos de fluxo de trabalho SQL: tabelas, declarações, declarações de fonte de dados, ou operações.
Funções exigidas
Para receber as permissões necessárias para declarar dependências para tabelas, declarações, fontes de dados
declarações e operações SQL personalizadas,
peça ao administrador para conceder a você
Papel do IAM Editor do Dataform (roles/dataform.editor
) em espaços de trabalho.
Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.
Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.
Declarar uma dependência como um argumento da função ref
Para referenciar e declarar automaticamente uma dependência em uma instrução SELECT
, faça o seguinte:
adicione a dependência como um argumento da função ref
.
ref
é uma função integrada principal do Dataform que permite
e dependem automaticamente de qualquer tabela, declaração de fonte de dados ou
operação SQL personalizada com a propriedade hasOutput
definida como true
em seu fluxo de trabalho SQL.
Para mais informações sobre a função ref
, consulte
Referência dos principais métodos de contexto do Dataform.
Para mais informações sobre como usar a função ref
em uma definição de tabela, consulte
Sobre as definições de tabelas.
O exemplo de código a seguir mostra a declaração da fonte de dados source_data
adicionada.
como um argumento da função ref
no SQLX incremental_table.sqlx
de configuração do Terraform de uma tabela incremental:
// filename is incremental_table.sqlx
config { type: "incremental" }
SELECT * FROM ${ref("source_data")}
No exemplo de código anterior, source_data
é declarado automaticamente como
dependência de incremental_table
.
O exemplo de código a seguir mostra a definição da tabela some_table
do arquivo SQLX adicionado.
como um argumento da função ref
no custom_assertion.sqlx
Arquivo de definição do SQLX de uma declaração:
// filename is custom_assertion.sqlx
config { type: "assertion" }
SELECT
*
FROM
${ref("some_table")}
WHERE
a is null
or b is null
or c is null
No exemplo de código anterior, some_table
é declarado automaticamente como
dependência de custom_assertion
. Durante a execução, o Dataform executa
some_table
primeiro e, em seguida, executa custom_assertion
depois que some_table
é criado.
Declare as dependências no bloco config
.
Declarar dependências que não são referenciadas na definição da instrução SQL dos dependentes, mas precisam ser executados antes da tabela, da declaração ou operação SQL personalizada, siga estas etapas:
- No espaço de trabalho de desenvolvimento, no painel Arquivos, expanda
diretório
definitions/
. - Selecione a tabela, declaração ou arquivo SQLX de operação SQL personalizada que que você quer editar.
No bloco
config
do arquivo, insira o seguinte snippet de código:dependencies: [ "DEPENDENCY", ]
Substitua DEPENDENCY pelo nome do arquivo da tabela, declaração, declaração de fonte de dados ou operação SQL personalizada que você quer adicionar como dependência. É possível inserir vários nomes de arquivos separados por vírgulas.
Opcional: clique em Formatar.
O exemplo de código a seguir mostra a tabela some_table
e o some_assertion
.
adicionada como dependências ao bloco config
de um arquivo de definição de tabela:
config { dependencies: [ "some_table", "some_assertion" ] }
A seguir
- Para aprender a definir declarações como dependências, consulte Teste tabelas com declarações.
- Para saber como declarar uma fonte de dados, consulte Declarar uma fonte de dados.
- Para aprender a definir operações SQL personalizadas, consulte Adicionar operações SQL personalizadas.
- Para aprender a reutilizar código em todo o fluxo de trabalho SQL com inclusões, consulte Reutilizar variáveis e funções com inclusões.