Declarar dependências

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ção ref, você precisa defina a propriedade hasOutput como true; 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 bloco config.

É possível definir a relação de dependência das seguintes maneiras:

Antes de começar

  1. Crie e inicialize um espaço de trabalho de desenvolvimento no seu repositório.
  2. Opcional: declarar uma fonte de dados.
  3. 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:

  1. No espaço de trabalho de desenvolvimento, no painel Arquivos, expanda diretório definitions/.
  2. Selecione a tabela, declaração ou arquivo SQLX de operação SQL personalizada que que você quer editar.
  3. 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.

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