O Dataform pode executar operações SQL personalizadas que não se enquadram no modelo do Dataform de publicação de uma tabela ou escrita de uma afirmação. Pode definir comandos SQL personalizados para o Dataform executar no BigQuery.
Antes de começar
Na Google Cloud consola, aceda à página Dataform.
Selecione ou crie um repositório.
Selecione ou crie um espaço de trabalho de desenvolvimento.
Funções necessárias
Para obter as autorizações de que
precisa para definir uma operação SQL personalizada,
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.
Crie um ficheiro para a definição de operação personalizada
Armazene os ficheiros SQLX de definição de operações personalizadas no diretório definitions/
.
Para criar um novo ficheiro SQLX no diretório definitions/
, siga estes passos:
- Aceda ao seu espaço de trabalho de desenvolvimento.
- No painel Ficheiros, junto a
definitions/
, clique no menuMais.
- Clique em Criar ficheiro.
No campo Adicionar um caminho do ficheiro, introduza o nome do ficheiro seguido de
.sqlx
apósdefinitions/
. Por exemplo,definitions/sample-operation.sqlx
.Os nomes de ficheiros só podem incluir números, letras, hífenes e sublinhados.
Clique em Criar ficheiro.
Defina uma operação de SQL personalizada
Pode definir uma operação SQL personalizada num ficheiro SQLX de type: operations
.
Pode escrever qualquer declaração SQL do BigQuery num ficheiro operations
.
O Dataform executa as suas operações SQL personalizadas no BigQuery
sem modificação.
Pode definir várias operações SQL personalizadas num ficheiro SQLX.
O BigQuery executa todas as operações num ficheiro no mesmo contexto e cria o SQL de execução juntando todas as operações com um ponto e vírgula (;
).
Para definir várias operações SQL personalizadas quando usar a estrutura Dataform
de código aberto
com um armazém de dados que não seja o BigQuery,
separe as operações com ---
.
Para definir uma operação SQL personalizada num ficheiro SQLX dedicado, siga estes passos:
- No seu espaço de trabalho de desenvolvimento, selecione o ficheiro SQLX para a definição da operação personalizada.
No ficheiro, introduza o seguinte fragmento do código:
config { type: "operations" }
Fora do bloco
config
, escreva a sua operação SQL.Opcional: clique em Formatar.
O seguinte exemplo de código mostra várias operações SQL personalizadas definidas num ficheiro
operations
:
config { type: "operations" }
DELETE FROM dataset.table WHERE country = 'GB';
DELETE FROM dataset.table WHERE country = 'FR';
O seguinte exemplo de código mostra uma operação SQL personalizada que cria manualmente uma vista:
config { type: "operations" }
CREATE OR REPLACE VIEW dataset.table AS (SELECT 1 AS TEST)
Crie uma tabela de saída referenciável
Pode criar manualmente uma tabela numa operação SQL personalizada que pode referenciar noutros scripts. Para criar uma tabela disponível para outros scripts, tem de declarar que a operação tem um resultado.
Para que o nome da tabela de saída corresponda ao nome do ficheiro operations
, pode usar a função self
na operação CREATE
.
Para criar uma tabela numa operação personalizada e disponibilizá-la a outros scripts, siga estes passos:
- No espaço de trabalho de desenvolvimento, selecione o ficheiro SQLX para a definição de operações personalizadas.
No ficheiro SQLX, introduza o seguinte fragmento do código:
config { type: "operations", hasOutput: true }
Para fazer corresponder o nome da tabela de saída ao nome do ficheiro, escreva uma operação SQL
CREATE
com a funçãoself
no seguinte formato:CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)
Substitua CUSTOM_SQL_QUERY pela declaração SQL de definição da tabela
SELECT
.Opcional: clique em Formatar.
Referencie uma tabela de resultados de uma operação SQL personalizada
- Para fazer referência a uma tabela de saída de operação SQL personalizada numa definição SQLX de uma tabela diferente, introduza o nome do ficheiro da tabela de saída na função
ref
.
O exemplo de código seguinte mostra uma operação SQL personalizada num ficheiro custom_SQL_operation_table.sqlx
que cria uma tabela referenciável denominada custom_SQL_operation_table
:
// filename is custom_SQL_operation_table.sqlx
config {
type: "operations",
hasOutput: true
}
CREATE OR REPLACE VIEW ${self()} AS (SELECT 1 AS TEST)
O seguinte exemplo de código mostra a referência ao elemento
custom\_SQL\_operation\_table table
num ficheiro SQLX de definição de tabela:
config { type: "table" }
SELECT * FROM ${ref("custom_SQL_operation_table")}
Crie uma tabela vazia
Pode querer criar uma tabela vazia para que um serviço diferente a possa preencher com dados. Pode criar uma tabela vazia numa operação SQL personalizada
com a função CREATE TABLE
. Para poder referenciar a tabela vazia noutras definições de ações do fluxo de trabalho, por exemplo, tabelas e vistas, pode adicionar a propriedade hasOutput:true
ao bloco config
da operação de tabela vazia.
- Para criar uma tabela vazia, use a função
CREATE TABLE
num ficheirotype: "operations"
no seguinte formato:
config {
type: "operations",
hasOutput: true // optional, lets you reference the empty table
}
CREATE TABLE ${self()} (
)
O exemplo de código seguinte mostra uma operação SQL personalizada que cria uma tabela vazia com um número inteiro e uma coluna de string. Não é possível fazer referência à tabela vazia criada por outras ações do fluxo de trabalho:
config {
type: "operations"
}
CREATE TABLE ${self()} (
x INT64,
y STRING
)
O que se segue?
- Para saber como criar operações SQL personalizadas com JavaScript, consulte o artigo Crie fluxos de trabalho exclusivamente com JavaScript.
- Para saber como acionar execuções manualmente, consulte o artigo Acione execuções manualmente.
- Para saber como usar a DML do BigQuery, consulte o artigo Usar a linguagem de manipulação de dados (DML).
- Para saber mais sobre a função
self
e outras funções incorporadas do Dataform, consulte a API Dataform.