Criar operações

Neste documento, mostramos como definir operações SQL personalizadas em um arquivo SQLX dedicado.

O Dataform pode executar operações SQL personalizadas que não se encaixam no modelo de publicação de uma tabela ou gravação de uma declaração do Dataform. É possível definir comandos SQL personalizados para o Dataform executar no BigQuery.

Antes de começar

  1. Noconsole, acesse a página Dataform. Google Cloud

    Acessar a página do Dataform

  2. Selecione ou crie um repositório.

  3. 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 Editor do Dataform (roles/dataform.editor) papel do IAM em 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 usando personalizados papéis ou outros predefinidos papéis.

Criar um arquivo para 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:

  1. Acesse o espaço de trabalho de desenvolvimento.
  2. No painel Arquivos, ao lado de definitions/, clique no menu Mais.
  3. Selecione Criar arquivo.
  4. No campo Adicionar um caminho de arquivo, insira o nome do arquivo seguido por .sqlx após definitions/. Por exemplo, definitions/sample-operation.sqlx.

    Os nomes de arquivos só podem incluir números, letras, hifens e sublinhados.

  5. Selecione Criar arquivo.

Definir uma operação SQL personalizada

É possível definir uma operação SQL personalizada em um arquivo SQLX de type: operations. Você pode gravar qualquer instrução SQL do BigQuery em um arquivo operations. O Dataform executa suas operações SQL personalizadas no BigQuery sem modificação.

É 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 de execução unindo todas as operações com um ponto e vírgula (;).

Para definir várias operações SQL personalizadas ao usar a estrutura de código aberto do Dataform 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:

  1. No espaço de trabalho de desenvolvimento, selecione o arquivo SQLX para definição de operação personalizada.
  2. No arquivo, digite este snippet de código:

    config { type: "operations" }
    
  3. Fora do bloco config, escreva sua operação SQL.

  4. Opcional: clique em Formatar.

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 a seguir 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 referenciável

É 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, é necessário declarar que a operação tem uma saída.

Para 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:

  1. No espaço de trabalho de desenvolvimento, selecione o arquivo SQLX para definição de operação personalizada.
  2. No arquivo SQLX, digite este snippet de código:

    config {
     type: "operations",
     hasOutput: true
    }
    
  3. Para corresponder ao nome da tabela de saída com o nome do arquivo, grave uma operação SQL CREATE com a função self no seguinte formato:

    CREATE OR REPLACE TABLE ${self()} AS (CUSTOM_SQL_QUERY)
    

    Substitua CUSTOM_SQL_QUERY pela instrução SQL SELECT de definição de tabela.

  4. Opcional: clique em Formatar.

Referenciar uma tabela de saída de operação SQL personalizada

  • Para referenciar 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 a seguir mostra uma operação SQL personalizada em um custom_SQL_operation_table.sqlx arquivo que cria uma tabela referenciável 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 à 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 preenchê-la com dados. É possível criar uma tabela vazia em uma operação SQL personalizada com a função CREATE TABLE. Para poder referenciar a tabela vazia em outras definições de ação de fluxo de trabalho, 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 CREATE TABLE função em um type: "operations" arquivo 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 outras ações de fluxo de trabalho:

config {
  type: "operations"
}

CREATE TABLE ${self()} (
  x INT64,
  y STRING
)

A seguir