O Dataform pode executar operações SQL personalizadas que não se encaixam no modelo do Dataform de publicação de uma tabela ou gravação de uma declaração. É possível definir comandos SQL personalizados para que o Dataform execute no BigQuery.
Antes de começar
No Console do Google Cloud, acesse a página Dataform.
Selecione ou crie um repositório.
Selecione ou crie um espaço de trabalho de desenvolvimento.
Funções exigidas
Para receber as permissões necessárias para definir uma operação SQL personalizada,
peça ao administrador que conceda a você o papel do IAM
Editor de formulário 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 um arquivo para a definição de operação personalizada
Armazene arquivos SQLX de definição de operação personalizada no diretório definitions/
.
Para criar um novo arquivo SQLX no diretório definitions/
, siga estas etapas:
- Acesse seu espaço de trabalho de desenvolvimento.
- No painel Files, ao lado de
definitions/
, clique no menuMore.
- Selecione Criar arquivo.
No campo Adicionar um caminho de arquivo, digite o nome do arquivo seguido por
.sqlx
apósdefinitions/
. Por exemplo,definitions/sample-operation.sqlx
.Os nomes de arquivo só podem incluir números, letras, hifens e sublinhados.
Selecione Criar arquivo.
Definir uma operação SQL personalizada
É possível definir uma operação SQL personalizada em um arquivo SQLX de type: operations
.
É possível gravar qualquer instrução SQL do BigQuery em um arquivo operations
.
O Dataform executa suas operações SQL personalizadas no BigQuery
sem modificações.
É possível definir várias operações SQL personalizadas em um arquivo SQLX.
O BigQuery executa todas as operações em um arquivo no mesmo contexto e
cria o SQL executado unindo todas as operações com um ponto e vírgula ;
.
Para definir várias operações SQL personalizadas ao usar o framework
de dados de código aberto (link em inglês)
com um data warehouse diferente do BigQuery,
separe as operações com ---
.
Para definir uma operação SQL personalizada em um arquivo SQLX dedicado, siga estas etapas:
- No espaço de trabalho de desenvolvimento, selecione o arquivo SQLX para a definição de operação personalizada.
No arquivo, digite este snippet de código:
config { type: "operations" }
Fora do bloco
config
, grave sua operação SQL.Opcional: clique em Formato.
O exemplo de código a seguir mostra várias operações SQL personalizadas definidas em um
arquivo operations
:
config { type: "operations" }
DELETE FROM dataset.table WHERE country = 'GB';
DELETE FROM dataset.table WHERE country = 'FR';
O exemplo de código abaixo mostra uma operação SQL personalizada que cria uma visualização manualmente:
config { type: "operations" }
CREATE OR REPLACE VIEW dataset.table AS (SELECT 1 AS TEST)
Criar uma tabela de saída com referência
É possível criar manualmente uma tabela em uma operação SQL personalizada que pode ser referenciada em outros scripts. Para criar uma tabela disponível para outros scripts, você precisa declarar que a operação tem uma saída.
Para fazer com que o nome da tabela de saída corresponda ao nome do arquivo operations
,
use a função self
na operação CREATE
.
Para criar uma tabela em uma operação personalizada e disponibilizá-la para outros scripts, siga estas etapas:
- No espaço de trabalho de desenvolvimento, selecione o arquivo SQLX para a definição de operação personalizada.
No arquivo SQLX, insira o seguinte snippet de código:
config { type: "operations", hasOutput: true }
Opcional: para corresponder o nome da tabela de saída ao nome do arquivo, escreva uma operação
CREATE
do SQL com a funçãoself
no seguinte formato:CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)
Substitua CUSTOM_SQL_QUERY pela instrução
SELECT
SQL da definição da tabela.Opcional: clique em Formato.
Fazer referência a uma tabela de saída de operação SQL personalizada
- Para fazer referência a uma tabela de saída de operação SQL personalizada em uma definição SQLX de uma
tabela diferente, insira o nome do arquivo da tabela de saída na função
ref
.
O exemplo de código abaixo mostra uma operação SQL personalizada em um
arquivo custom_SQL_operation_table.sqlx
que cria uma tabela de referência
chamada 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 exemplo de código a seguir mostra a referência a
custom\_SQL\_operation\_table table
em um arquivo SQLX de definição de tabela:
config { type: "table" }
SELECT * FROM ${ref("custom_SQL_operation_table")}
Criar uma tabela vazia
Talvez você queira criar uma tabela vazia para que um serviço diferente possa
preencher com dados. É possível criar uma tabela vazia em uma operação SQL personalizada
com a função CREATE TABLE
. Para fazer referência à tabela vazia em
outras definições de objetos de fluxo de trabalho SQL, por exemplo, tabelas e visualizações, adicione
a propriedade hasOutput:true
ao bloco config
da operação de tabela vazia.
- Para criar uma tabela vazia, use a função
CREATE TABLE
em um arquivotype: "operations"
no seguinte formato:
config {
type: "operations",
hasOutput: true // optional, lets you reference the empty table
}
CREATE TABLE ${self()} (
)
O exemplo de código a seguir mostra uma operação SQL personalizada que cria uma tabela vazia com um número inteiro e uma coluna de string. A tabela vazia criada não pode ser referenciada por outros objetos de fluxo de trabalho SQL:
config {
type: "operations"
}
CREATE TABLE ${self()} (
x INT64,
y STRING
)
A seguir
- Para saber como criar operações SQL personalizadas com JavaScript, consulte Criar fluxos de trabalho do Dataform com JavaScript.
- Para saber como acionar execuções manualmente, consulte Acionar execução.
- Para saber como usar a DML do BigQuery, consulte Como usar a linguagem de manipulação de dados (DML).
- Para saber mais sobre a função
self
e outras funções integradas do Dataform, consulte a API do Dataform.