Esta página mostra como fazer o seguinte:
- Instale um pacote JavaScript em um repositório do Dataform.
- Autentique um pacote NPM particular para permitir a instalação dele em um repositório.
- Crie um pacote JavaScript personalizado que pode ser usado para desenvolver fluxos de trabalho.
Antes de começar
No Google Cloud console, acesse a página Dataform.
Faça uma ou as duas ações a seguir:
- Para instalar um pacote em um repositório ou autenticar um pacote NPM
privado para ativar a instalação, siga estas etapas:
- Selecione ou crie um repositório.
- Selecione ou crie um espaço de trabalho de desenvolvimento.
- Opcional: para instalar um pacote particular, autentique o pacote.
- Se o repositório não tiver um arquivo
package.json
, criepackage.json
e mova o pacote principal do Dataform.
- Para criar um pacote, siga estas etapas:
- Crie um repositório do Dataform dedicado ao seu pacote. Faça o nome do repositório corresponder ao nome do pacote.
- Conecte o repositório a um repositório Git de terceiros que vai hospedar seu pacote.
- Crie e inicialize um espaço de trabalho no repositório do Dataform.
- Para instalar um pacote em um repositório ou autenticar um pacote NPM
privado para ativar a instalação, siga estas etapas:
Verifique se você tem as permissões necessárias para concluir as tarefas neste documento.
Funções exigidas
Para receber as permissões necessárias para concluir as tarefas neste documento, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Editor do Dataform (
roles/dataform.editor
) em espaços de trabalho e repositórios -
Administrador do Dataform (
roles/dataform.admin
) em repositórios
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.
Instalar um pacote
Esta seção mostra como instalar um pacote JavaScript e importá-lo para um arquivo JavaScript e um arquivo SQLX para que você possa usar o pacote para desenvolver fluxos de trabalho no Dataform.
Para usar um pacote no Dataform, instale-o no seu repositório.
É possível instalar os seguintes tipos de pacotes no Dataform:
- Pacotes NPM públicos publicados
- Pacotes públicos do NPM não publicados
- Pacotes NPM particulares autenticados
Em seguida, para usar o pacote em um arquivo JavaScript ou SQLX, importe o conteúdo selecionado do pacote para o arquivo. Também é possível importar um pacote inteiro para um arquivo JavaScript ou SQLX em vez do conteúdo selecionado.
Para evitar problemas com a instalação de pacotes no ambiente de produção, recomendamos que você faça o seguinte:
Especifique explicitamente a versão do pacote em
package.json
, por exemplo,3.0.0
. Não use outras opções dedependencies
dopackage.json
, por exemplo,>version
.Teste novas versões de pacotes em um ambiente de não produção. Para mais informações sobre como configurar diferentes ambientes de ciclo de vida do fluxo de trabalho, consulte Práticas recomendadas para o ciclo de vida do fluxo de trabalho.
Adicionar um pacote como dependência
Para instalar um pacote em um repositório do Dataform, adicione-o como uma dependência no arquivo package.json
:
- No espaço de trabalho, no painel Arquivos, selecione
package.json
. Adicione o pacote ao bloco
dependencies
:Adicione um pacote público do NPM publicado no seguinte formato:
"PACKAGE-NAME": "PACKAGE-VERSION"
Substitua:
- PACKAGE-NAME com o nome do pacote.
- PACKAGE-VERSION com a versão mais recente do
pacote NPM público publicado. Para evitar problemas com a instalação de pacotes,
especifique explicitamente a versão, por exemplo,
3.0.0
.
Adicione um pacote público do NPM não publicado no seguinte formato:
"PACKAGE-NAME": "PACKAGE-URL"
Substitua:
- PACKAGE-NAME com o nome do pacote.
- PACKAGE-URL com o URL
tar.gz
do repositório de pacotes de terceiros, por exemplo,https://github.com/user/sample-package-repository/archive/master.tar.gz
.
Adicione um pacote NPM privado autenticado no seguinte formato:
"REGISTRY-SCOPE/PACKAGE-NAME": "PACKAGE-URL"
Substitua:
- REGISTRY-SCOPE com o nome do pacote.
REGISTRY-SCOPE precisa corresponder ao escopo do registro
definido no arquivo
.nmprc
do seu repositório. - PACKAGE-NAME com o nome do pacote.
- PACKAGE-URL com o URL
tar.gz
do repositório de pacotes, por exemplo,https://github.com/user/sample-package-repository/archive/master.tar.gz
.
- REGISTRY-SCOPE com o nome do pacote.
REGISTRY-SCOPE precisa corresponder ao escopo do registro
definido no arquivo
Clique em Instalar pacotes.
O exemplo de código a seguir mostra o pacote público de código aberto
Slowly changing dimensions adicionado ao arquivo .package.json
:
```json
{
"name": "repository-name",
"dependencies": {
"@dataform/core": "2.0.3",
"dataform-scd": "https://github.com/dataform-co/dataform-scd/archive/0.3.tar.gz"
}
}
```
Importar uma função ou constante de pacote para um arquivo JavaScript no Dataform
Para usar uma função ou constante de um pacote em um arquivo JavaScript no Dataform, primeiro importe para o arquivo.
Para importar uma função ou uma constante de um pacote para um arquivo JavaScript, siga estas etapas:
- No seu espaço de trabalho, no painel Arquivos, selecione um arquivo
.js
em que você quer usar o pacote. No arquivo, importe uma função ou uma constante no seguinte formato:
const { EXPORT-NAME } = require("PACKAGE-NAME");
- Substitua EXPORT-NAME pelo nome da função ou
constante que você quer usar, declarada em
module.exports
no arquivo de pacoteindex.js
. - Substitua PACKAGE-NAME pelo nome do pacote que você quer usar.
- Substitua EXPORT-NAME pelo nome da função ou
constante que você quer usar, declarada em
O exemplo de código a seguir mostra a função getDomain
do
pacote postoffice
importada e usada em um arquivo JavaScript:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
const { getDomain } = require("postoffice");
getDomain();
Importar um pacote inteiro para um arquivo JavaScript no Dataform
Para importar o pacote inteiro para um arquivo JavaScript em vez de importar funções ou constantes selecionadas para um arquivo JavaScript, siga estas etapas:
- No espaço de trabalho, no painel Arquivos, selecione um arquivo
.js
em que você quer usar o pacote. No arquivo, importe o pacote no seguinte formato:
const CONSTANT-NAME = require("PACKAGE-NAME");
- Substitua CONSTANT-NAME por um nome para a constante.
- Substitua PACKAGE-NAME pelo nome do pacote que você quer usar.
O exemplo de código a seguir mostra a função getDomain
do
pacote postoffice
importado usado em um arquivo JavaScript:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
const postoffice = require("postoffice");
postoffice.getDomain();
Importar uma função ou constante de pacote para um arquivo SQLX no Dataform
Para usar uma função ou uma constante de um pacote em um arquivo SQLX, primeiro importe para o arquivo.
Para importar uma função ou uma constante de um pacote para um arquivo SQLX, siga estas etapas:
- No seu espaço de trabalho, no painel Arquivos, selecione um arquivo
.sqlx
em que você quer usar o pacote. No arquivo, insira o seguinte bloco
js
:js { const { EXPORT-NAME } = require("PACKAGE-NAME"); }
- Substitua EXPORT-NAME pelo nome da função
ou constante que você quer usar, declarada em
module.exports
no arquivo do pacoteindex.js
. - Substitua PACKAGE-NAME pelo nome do pacote que você quer usar.
- Substitua EXPORT-NAME pelo nome da função
ou constante que você quer usar, declarada em
O exemplo de código a seguir mostra a função getDomain
do
pacote postoffice
importado em um bloco js
e usado em uma
instrução SELECT
em um arquivo SQLX:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
config {
type: "table",
}
js {
const { getDomain } = require("postoffice");
}
SELECT ${getDomain("email")} as test
Importar um pacote inteiro para um arquivo SQLX no Dataform
Para importar todo o pacote para um arquivo SQLX em vez de importar funções ou constantes selecionadas para um arquivo JavaScript, siga estas etapas:
- No seu espaço de trabalho, no painel Arquivos, selecione um arquivo
.sqlx
em que você quer usar o pacote. No arquivo, importe o pacote no seguinte formato:
js { const CONSTANT-NAME = require("PACKAGE-NAME"); }
- Substitua CONSTANT-NAME por um nome para a constante.
- Substitua PACKAGE-NAME pelo nome do pacote que você quer usar.
O exemplo de código a seguir mostra o pacote postoffice
importado em
um bloco js
e a função getDomain
usada em uma
instrução SELECT
em um arquivo SQLX:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
config {
type: "table",
}
js {
const postoffice = require("postoffice");
}
SELECT ${postoffice.getDomain("email")} as test
Autenticar um pacote particular
Nesta seção, mostramos como autenticar um pacote npm particular no Dataform para permitir a instalação dele em um repositório do Dataform.
Para instalar um pacote NPM particular em um repositório do Dataform e usá-lo para desenvolver seu fluxo de trabalho, primeiro é necessário autenticar o pacote no Dataform. O processo de autenticação é diferente para o primeiro pacote particular em um repositório e para um pacote particular subsequente em um repositório.
Autenticar o primeiro pacote particular em um repositório do Dataform
Para autenticar pacotes NPM particulares no Dataform, faça o seguinte antes de instalar o primeiro pacote NPM particular em um repositório do Dataform:
Crie um secret do Secret Manager dedicado a armazenar tokens de autenticação de pacotes NPM particulares no repositório do Dataform.
- Adicione o token de autenticação do pacote, obtido do registro do NPM, ao secret.
É preciso armazenar todos os tokens de autenticação dos pacotes NPM particulares em seu repositório em um único secret. É necessário criar um segredo dedicado para cada repositório do Dataform. O secret precisa estar no formato JSON.
Faça upload do secret para o repositório do Dataform.
Crie um arquivo
.npmrc
e adicione o token de autenticação do pacote ao arquivo.O token de autenticação no arquivo
.npmrc
precisa corresponder ao token de autenticação no segredo enviado.
Depois de autenticar o pacote NPM particular, você pode instalar o pacote no repositório do Dataform.
Criar um secret para autenticação de pacotes particulares
Para autenticar pacotes NPM particulares em um repositório do Dataform, crie um secret do Secret Manager e defina tokens de autenticação para todos os pacotes particulares que você quer instalar no repositório do Dataform dentro do secret. Defina um token de autenticação para cada pacote NPM privado e armazene todos os tokens em um único secret para cada repositório. O secret precisa estar no formato JSON.
Para criar um secret com tokens de autenticação para pacotes NPM particulares, siga estas etapas:
No Secret Manager, crie um secret.
- No campo Valor do secret, insira um ou vários tokens de autenticação no seguinte formato:
{ "AUTHENTICATION_TOKEN_NAME": "TOKEN_VALUE" }
Substitua:
- AUTHENTICATION_TOKEN_NAME: um nome exclusivo para o token que identifica o pacote autenticado.
- TOKEN_VALUE: o valor do token de autenticação, obtido no seu registro do NPM.
Conceda acesso ao secret para sua conta de serviço do Dataform.
A conta de serviço do Dataform está neste formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
- Ao conceder acesso, atribua o papel
roles/secretmanager.secretAccessor
à sua conta de serviço do Dataform.
- Ao conceder acesso, atribua o papel
Fazer upload do secret para autenticação de pacotes particulares em um repositório do Dataform
Antes de instalar um pacote NPM particular em um repositório do Dataform pela primeira vez, faça upload do secret com o token de autenticação do pacote para o repositório.
Para fazer upload do Secret com tokens de autenticação de pacotes NPM particulares em um repositório do Dataform, siga estas etapas:
No Google Cloud console, acesse a página Dataform.
Selecione o repositório em que você quer instalar pacotes NPM particulares.
Na página do repositório, clique em Configurações > Configurar pacotes NPM particulares.
No painel Adicionar token secret do pacote NPM, no menu Secret, selecione o secret que contém tokens de autenticação para pacotes NPM particulares.
Clique em Salvar.
Criar um arquivo .npmrc
para autenticação de pacotes particulares
Para autenticar pacotes NPM particulares em um repositório do Dataform,
crie um arquivo .npmrc
de nível superior no repositório. É necessário armazenar tokens de autenticação para todos os pacotes NPM particulares a serem instalados no repositório dentro do arquivo .npmrc
. Os tokens de autenticação no arquivo
.npmrc
precisam corresponder aos tokens de autenticação no
segredo enviado ao repositório. Para mais informações sobre arquivos .npmrc
, consulte a documentação do npmrc.
Para criar um arquivo .npmrc
de nível superior no repositório, siga estas etapas:
No Google Cloud console, acesse a página Dataform.
Selecione o repositório em que você quer instalar pacotes NPM particulares e escolha um espaço de trabalho.
No painel Arquivos, clique em
Mais e em Criar arquivo.No painel Criar novo arquivo, faça o seguinte:
No campo Adicionar um caminho de arquivo, insira
.npmrc
.Selecione Criar arquivo.
Adicionar um token de autenticação ao arquivo .npmrc
em um repositório do Dataform
Para autenticar um pacote NPM particular em um repositório do Dataform
que já contenha um Secret com tokens de autenticação de pacote e um arquivo .npmrc
, adicione o token de autenticação do pacote particular ao arquivo
.npmrc
no repositório.
No arquivo .npmrc
, defina o escopo do registro do NPM e adicione
o token de autenticação para o pacote particular acessado nesse escopo. Para mais informações sobre arquivos .npmrc
, consulte a documentação do npmrc.
O token de autenticação no arquivo .npmrc
precisa corresponder ao token de autenticação
no segredo enviado ao repositório.
Para adicionar um token de autenticação ao arquivo .npmrc
em um repositório do Dataform, siga estas etapas:
No Google Cloud console, acesse a página Dataform.
Selecione o repositório em que você quer instalar pacotes NPM particulares e escolha um espaço de trabalho.
No painel Arquivos, selecione o arquivo
.npmrc
.No arquivo
.npmrc
, defina o escopo do registro do NPM e o token de autenticação para o pacote particular no seguinte formato:@REGISTRY-SCOPE:registry=NPM-REGISTRY-URL NPM-REGISTRY-URL:_authToken=$AUTHENTICATION-TOKEN
Substitua:
- REGISTRY-SCOPE: o escopo do registro npm a que você quer aplicar o token de autenticação.
- NPM-REGISTRY-URL: o URL do seu registro do NPM, por exemplo,
https://npm.pkg.github.com
. - AUTHENTICATION-TOKEN: o token de autenticação do
pacote NPM privado. O token de autenticação no arquivo
.npmrc
precisa corresponder ao token de autenticação no segredo enviado. O token de autenticação é fornecido como uma variável de ambiente no arquivo.npmrc
. Por isso, adicione as chaves de abertura${
e de fechamento}
.
É possível inserir vários tokens de autenticação.
O exemplo de código a seguir mostra um token de autenticação para um pacote NPM
particular adicionado ao arquivo .npmrc
em um repositório do Dataform:
@company:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${AUTHENTICATION_TOKEN}
Autenticar um pacote particular subsequente em um repositório do Dataform
Para autenticar um pacote NPM particular em um repositório do Dataform
que já contenha um Secret com tokens de autenticação de pacote e um arquivo
.npmrc
, siga estas etapas:
No Secret Manager, liste os secrets e selecione o secret que armazena tokens de autenticação de pacotes NPM particulares do seu repositório.
Adicione uma nova versão ao secret.
O Dataform usa a versão mais recente do secret por padrão.
- Adicione o token de autenticação do pacote particular ao valor do secret no seguinte formato:
{ "AUTHENTICATION_TOKEN_NAME": "TOKEN_VALUE" }
Substitua:
- AUTHENTICATION_TOKEN_NAME: um nome exclusivo para o token que identifica o pacote autenticado.
- TOKEN_VALUE: o valor do token de autenticação, obtido no seu registro do NPM.
É possível adicionar vários tokens de autenticação de uma só vez.
No Dataform, adicione o token de autenticação ao arquivo
.npmrc
no seu repositório.
Depois de autenticar o pacote NPM particular, você pode instalar o pacote no repositório do Dataform.
Criar um pacote
Nesta seção, mostramos como criar um pacote JavaScript personalizado que pode ser usado para desenvolver fluxos de trabalho no Dataform.
Para criar um pacote que possa ser reutilizado em vários repositórios do Dataform, crie um repositório dedicado ao pacote e conecte-o a um repositório Git de terceiros para disponibilizá-lo a outros repositórios do Dataform.
Em seguida, crie um arquivo index.js
de nível superior e adicione a ele o conteúdo do pacote
exportável, como funções e constantes. Para um exemplo
de pacote criado no Dataform, consulte
dataform-package-base
no GitHub.
Depois de criar o pacote, você pode instalá-lo em um repositório diferente do Dataform e usar o conteúdo exportável do pacote, como constantes e funções, para desenvolver fluxos de trabalho.
Como alternativa à criação de um pacote, você pode reutilizar funções e constantes do JavaScript em um único repositório do Dataform com inclusões. Para mais informações, consulte Reutilizar variáveis e funções com inclusões no Dataform.
Para criar seu próprio pacote com código JavaScript que pode ser reutilizado no Dataform, siga estas etapas no seu espaço de trabalho:
No painel Arquivos, clique em
Mais.Selecione Criar arquivo.
No painel Criar novo arquivo, faça o seguinte:
No campo Adicionar um caminho de arquivo, insira
index.js
.Selecione Criar arquivo.
No arquivo
index.js
, insira o código JavaScript que você quer que o pacote exporte.Crie constantes no seguinte formato:
const CONSTANT_NAME = CONSTANT_VALUE; module.exports = { CONSTANT_NAME };
Substitua:
CONSTANT_NAME
: o nome da constanteCONSTANT_VALUE
: o valor da sua constante
Crie funções no seguinte formato:
function FUNCTION_NAME(PARAMETERS) { FUNCTION_BODY } module.exports = { FUNCTION_NAME }
Substitua:
FUNCTION_NAME
: o nome da sua função.PARAMETERS
: os parâmetros da sua função.FUNCTION_BODY
: o código que você quer que a função execute.
Opcional: clique em Formatar.
Opcional: no diretório
definitions
, adicione o código do pacote que não será exportado.
O exemplo de código de pacote a seguir mostra o arquivo index.js
do
pacote postoffice
que exporta a função getDomain
:
// filename index.js
// package name postoffice
const GENERIC_DOMAINS = "('samplemail.com','samplemail.co.uk','examplemailbox.com'";
function getDomain(email) {
let cleanEmail = `trim(${email})`
const domain = `substr(${cleanEmail}, strpos(${cleanEmail}, '@') + 1)`;
return `case
when ${domain} in ${common.GENERIC_DOMAINS} then ${cleanEmail}
when ${domain} = "othermailbox.com" then "other.com"
when ${domain} = "mailbox.com" then "mailbox.global"
when ${domain} = "support.postman.com" then "postman.com"
else ${domain}
end`;
}
module.exports = { getDomain }
A seguir
- Para saber como gerenciar o pacote principal obrigatório do Dataform, consulte Gerenciar o pacote principal do Dataform.
- Para saber mais sobre pacotes no Dataform, consulte Reutilizar código em vários repositórios com pacotes.
- Para saber como escrever variáveis e funções JavaScript que podem ser reutilizadas no Dataform, consulte Reutilizar variáveis e funções com inclusões no Dataform.