No Dataform, uma tabela é um dos tipos de objetos que compõem um fluxo de trabalho. Pode criar tabelas que fazem referência a dados das origens de dados declaradas para o seu fluxo de trabalho ou de outras tabelas no seu fluxo de trabalho. O Dataform compila as definições das tabelas em SQL em tempo real. Quando aciona a execução, o Dataform executa o código SQL e cria as tabelas definidas no BigQuery.
Pode criar os seguintes tipos de tabelas num ficheiro SQLX do type: "table":
table: uma tabela normal.incremental: uma tabela incremental.view: uma vista de tabela. Para mais informações, consulte o artigo Introdução às vistas.materialized: uma vista de tabela materializada. Para mais informações, consulte o artigo Introdução às vistas materializadas.
Também pode definir partições e clusters da tabela.
Para manter um registo da finalidade de uma tabela ou da respetiva relação com outras tabelas no seu fluxo de trabalho, pode adicionar documentação à tabela ou às colunas selecionadas.
Para testar os dados numa tabela em relação a condições específicas, pode criar consultas de teste de qualidade dos dados denominadas afirmações. O Dataform executa validações sempre que atualiza o fluxo de trabalho e envia-lhe alertas se alguma validação falhar.
Para substituir o esquema, a base de dados e o nome predefinidos de uma tabela selecionada, pode substituir as definições da tabela.
Para desativar a criação de tabelas ou executar uma declaração SQL antes ou depois da criação de tabelas, pode configurar ações adicionais.
Para organizar as tabelas no BigQuery depois de as executar, pode adicionar etiquetas do BigQuery. Para saber mais, consulte o artigo Introdução às etiquetas.
Para restringir o acesso aos dados ao nível da coluna da tabela, pode adicionar etiquetas de políticas do BigQuery. Para saber mais, consulte o artigo Introdução ao controlo de acesso ao nível da coluna.
Além de definir tabelas num ficheiro type: "table" SQLX, pode
criar tabelas vazias
definindo uma consulta SQL personalizada num ficheiro type: "operations" SQLX.
Pode criar uma tabela vazia para que um serviço diferente a preencha com dados.
Antes de começar
Na Google Cloud consola, aceda à página Dataform.
Crie e inicialize um espaço de trabalho de desenvolvimento no seu repositório.
Opcional: declare uma origem de dados.
Funções necessárias
Para receber as autorizações de que
precisa para concluir as tarefas neste documento,
peça ao seu administrador para lhe conceder a
função de IAM Editor do Dataform (roles/dataform.editor) em espaços de trabalho.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Criar uma tabela
Esta secção mostra como criar tabelas com o Dataform core no Dataform.
Acerca das definições de tabelas
Para definir uma tabela, define o tipo de tabela e escreve uma declaração SELECT num ficheiro SQLX.type: "table" Em seguida, o Dataform compila o código principal do Dataform em SQL, executa o código SQL e cria as tabelas definidas no BigQuery.
Numa declaração SELECT do Dataform core, define a estrutura da tabela
e faz referência a outros objetos do seu fluxo de trabalho.
Além de definir tabelas num ficheiro type: "table" SLQX, pode criar tabelas vazias definindo uma consulta SQL personalizada num ficheiro type: "operations" SQLX.
Para mais informações, consulte o artigo
Crie uma tabela vazia.
Referencie dependências com ref
Para fazer referência a uma ação do fluxo de trabalho numa declaração SELECT e adicioná-la automaticamente
como uma dependência, use a função ref. O Dataform executa as dependências antes das tabelas que dependem delas para verificar a ordenação correta do pipeline.
A função ref é uma função principal do Dataform integrada que é essencial para a gestão de dependências no Dataform. A função ref permite-lhe fazer referência e depender automaticamente dos seguintes objetos definidos no seu fluxo de trabalho do Dataform, em vez de codificar os nomes do esquema e das tabelas:
- Tabelas de todos os tipos de tabelas suportados.
- Declarações de origens de dados.
- Operações SQL personalizadas com a
hasOutputpropriedade definida comotrue.
O Dataform usa a função ref para criar uma árvore de dependências de todas as tabelas a serem criadas ou atualizadas.
Após a compilação, o Dataform adiciona declarações padronizadas à declaração SQL, como CREATE, REPLACE, INSERT ou MERGE.
O exemplo de código seguinte mostra uma definição de tabela com a utilização da função ref:
config { type: "table" }
SELECT
order_date AS date,
order_id AS order_id,
order_status AS order_status,
SUM(item_count) AS item_count,
SUM(amount) AS revenue
FROM ${ref("store_clean")}
GROUP BY 1, 2
Na função ref, indica o nome da declaração da tabela ou da origem de dados da qual quer depender. Normalmente, este é o nome do ficheiro SQLX no qual essa declaração de tabela ou origem de dados está definida.
Se um nome de tabela for substituído, use o nome substituído na função ref.
Por exemplo, referencie uma tabela com config { name: "overridden_name" }
como ref("overridden_name"). Para mais informações, consulte os artigos
Substitua as definições da tabela e
Faça referência a uma tabela com um nome de tabela substituído.
Quando tem várias tabelas com o mesmo nome em esquemas diferentes, pode fazer referência a uma tabela específica fornecendo dois argumentos à função ref: o nome do esquema e o nome da tabela.
O seguinte exemplo de código mostra a função ref com dois argumentos para especificar uma tabela num esquema específico:
config { type: "table" }
SELECT * FROM ${ref("schema", "store_clean")}
Também pode adicionar dependências de tabelas manualmente ao bloco config para tabelas, declarações, declarações de origens de dados ou operações SQL personalizadas que não sejam referenciadas numa função ref na declaração SELECT. O Dataform executa estas dependências antes das tabelas dependentes.
O seguinte exemplo de código mostra uma dependência de tabela no bloco config:
config { dependencies: [ "unreferenced_table" ] }
SELECT * FROM ...
Para mais informações sobre a gestão de dependências no seu fluxo de trabalho, consulte o artigo Defina dependências.
Referencie outras tabelas com resolve
A