Introdução ao JavaScript no Dataform

Este documento ajuda a entender como você pode usar JavaScript para desenvolver fluxos de trabalho SQL no Dataform.

Núcleo do Dataform permite criar objetos de fluxo de trabalho do SQL com SQLX e JavaScript. Embora opcional, usar JavaScript junto com SQLX para criar elementos semelhantes repetidamente em seu fluxo de trabalho. Por exemplo, com JavaScript, você pode criar um visualização de cada tabela no fluxo de trabalho com determinados IDs de usuário removidos. Você também pode desenvolver objetos de fluxo de trabalho SQL exclusivamente com JavaScript.

Para começar a desenvolver fluxos de trabalho SQL do Dataform usando JavaScript, você precisa conhecer Sintaxe do JavaScript e os seguintes conceitos de JavaScript:

  • Variáveis
  • Matrizes
  • Instruções condicionais
  • Repetições for
  • Maps
  • remotas
  • Objetos
  • Como exportar e importar módulos

Adicionar código JavaScript a um arquivo SQLX

É possível adicionar código JavaScript a um arquivo SQLX de duas maneiras: inline ou dentro de um bloco JavaScript.

Você pode usar um bloco JavaScript para definir funções ou constantes em um arquivo SQLX. É possível usar JavaScript inline para modificar dinamicamente uma consulta SQLX ou SQL.

O exemplo de código abaixo mostra o núcleo do self Dataform integrado Função JavaScript adicionada in-line ao bloco post_operations em um arquivo SQLX:

config {type: "table"}

SELECT * FROM ...

post_operations {
  GRANT `roles/bigquery.dataViewer`
  ON
  TABLE ${self()}
  TO "group:allusers@example.com", "user:otheruser@example.com"
}

O exemplo de código a seguir mostra uma constante definida em um bloco JavaScript e usada em linha dentro de uma consulta em um arquivo SQLX:

js {
  const columnName = "foo";
}

SELECT 1 AS ${columnName} FROM "..."

Reutilizar código com JavaScript

É possível reutilizar o código JavaScript para simplificar o desenvolvimento no Dataform. Para reutilizar constantes e funções JavaScript em um único arquivo SQLX, é possível encapsulá-los em um bloco de JavaScript. Para reutilizar o código JavaScript em um único repositório do Dataform, é possível criar inclusões. Para reutilizar o código JavaScript em vários repositórios do Dataform, é possível criar ou importar um pacote.

Reutilizar código em um único arquivo SQLX com encapsulamento de JavaScript

Para criar partes repetitivas do código SQL que podem ser reutilizadas no um único arquivo SQLX, é possível encapsular funções e constantes em um bloco de JavaScript. Só é possível reutilizar o código definido em um bloco JavaScript no arquivo SQLX em que o bloco está definido. Para mais informações, consulte Visão geral do Dataform Core.

O exemplo de código a seguir mostra uma constante e uma função definida em uma Bloco de JavaScript usado in-line em uma consulta em um arquivo SQLX:

js {
 const foo = 1;
 function bar(number){
     return number+1;
 }
}

select
 ${foo} as one,
 ${bar(foo)} as two

Reutilizar código em um único repositório com inclusões

Inclui constantes do JavaScript ou funções globais para seu repositório. Você define inclusões no includes do seu repositório. Depois, eles podem ser reutilizados em todo o repositório em arquivos JavaScript e SQLX.

O exemplo de código a seguir mostra a definição da constante launch_date. no arquivo includes/constants.js:

// filename is includes/constants.js
const launch_date = "11.11.2011";
module.exports = { launch_date };

O exemplo de código a seguir mostra a constante launch_date referenciada em uma tabela. consulta de definição dinâmica em um arquivo SQLX:

config {type: "table"}

SELECT * FROM source_table WHERE date > ${constants.launch_date}

Reutilize código em vários repositórios com pacotes

Os pacotes são coleções de código JavaScript que você pode importar e usar múltiplos repositórios do Dataform para simplificar o desenvolvimento do fluxo de trabalho SQL.

É possível criar seu próprio pacote personalizado no o Dataform ou usar um dos pacotes de código aberto do Dataform; disponíveis no Página do Dataform de código aberto do GitHub.

Para conferir um exemplo de como usar um pacote de código aberto no Dataform, consulte Usar as dimensões que mudam lentamente no Dataform (em inglês).

Para usar o conteúdo de um pacote no Dataform, você precisa: instalar o pacote no repositório do Dataform e importá-lo para o arquivo JavaScript ou SQLX individual em que você quer usar o pacote. Para mais informações, consulte Instalar um pacote no Dataform.

Para instalar um pacote NPM privado em um repositório do Dataform, autentique o pacote.

Criar fluxos de trabalho SQL em JavaScript

Como alternativa ao desenvolvimento de fluxos de trabalho SQL em SQLX, ou SQLX combinado com JavaScript, é possível criar objetos de fluxo de trabalho SQL em arquivos .js usando apenas JavaScript. É possível criar vários objetos de fluxo de trabalho SQL em uma com métodos globais do Dataform e código JavaScript ES5 arbitrário, como loops e constantes. Cada elemento JavaScript global do Dataform contêm propriedades que podem ser usadas para configurar os objetos criados.

É possível criar os seguintes objetos de fluxo de trabalho SQL usando apenas JavaScript no Dataform:

  • Declarações de fonte de dados
  • Tabelas
  • Declarações manuais
  • Operações SQL personalizadas

Para obter mais informações sobre como criar objetos de fluxo de trabalho SQL usando somente JavaScript, consulte Criar fluxos de trabalho SQL do Dataform com JavaScript.

A seguir