Este documento mostra como fazer o seguinte:
- Instale um pacote Javascript num repositório do Dataform.
- Autentique um pacote NPM privado para permitir a respetiva instalação num repositório.
- Crie um pacote JavaScript personalizado que pode usar para desenvolver fluxos de trabalho.
Antes de começar
Na Google Cloud consola, aceda à página Dataform.
Realize uma ou ambas as seguintes ações:
- Para instalar um pacote num repositório ou autenticar um pacote NPM privado para permitir a respetiva instalação, siga estes passos:
- Selecione ou crie um repositório.
- Selecione ou crie um espaço de trabalho de desenvolvimento.
- Opcional: para instalar um pacote privado, autentique o pacote privado.
- Se o seu repositório não contiver um ficheiro
package.json
, crie um ficheiropackage.json
e mova o pacote principal do Dataform.
- Para criar um pacote, siga estes passos:
- Crie um repositório do Dataform dedicado ao seu pacote. Faça corresponder o nome do repositório ao nome do seu pacote.
- Associe o repositório a um repositório Git de terceiros que vai alojar o seu pacote.
- Crie e inicialize um espaço de trabalho no repositório do Dataform.
- Para instalar um pacote num repositório ou autenticar um pacote NPM privado para permitir a respetiva instalação, siga estes passos:
Certifique-se de que tem as autorizações necessárias para concluir as tarefas neste documento.
Funções necessárias
Para receber as autorizações de que precisa para concluir as tarefas neste documento, peça ao seu administrador que lhe conceda as seguintes funções da 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 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.
Instale um pacote
Esta secção mostra como instalar um pacote JavaScript e importá-lo para um ficheiro JavaScript e um ficheiro SQLX, para que possa usar o pacote para desenvolver fluxos de trabalho no Dataform.
Para usar um pacote no Dataform, tem de o instalar no seu repositório.
Pode instalar os seguintes tipos de pacotes no Dataform:
- Pacotes NPM públicos publicados
- Pacotes NPM públicos não publicados
- Pacotes NPM privados autenticados
Em seguida, para usar o pacote num ficheiro JavaScript ou SQLX, tem de importar o conteúdo selecionado do pacote para o ficheiro. Também pode importar um pacote completo para um ficheiro JavaScript ou SQLX em vez dos respetivos conteúdos selecionados.
Para evitar problemas com a instalação de pacotes no seu ambiente de produção, recomendamos que faça o seguinte:
Especifique explicitamente a versão do pacote em
package.json
, por exemplo,3.0.0
. Não use outrasdependencies
opções depackage.json
, por exemplo,>version
.Testar novas versões de pacotes num ambiente de não produção. Para mais informações sobre a configuração de diferentes ambientes do ciclo de vida do fluxo de trabalho, consulte as Práticas recomendadas para o ciclo de vida do fluxo de trabalho.
Adicione um pacote como dependência
Para instalar um pacote num repositório do Dataform, tem de o
adicionar como uma dependência no ficheiro package.json
:
- No espaço de trabalho, no painel Ficheiros, selecione
package.json
. Adicione o pacote ao bloco
dependencies
:Adicione um pacote NPM público publicado no seguinte formato:
"PACKAGE-NAME": "PACKAGE-VERSION"
Substitua o seguinte:
- 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 NPM público não publicado no seguinte formato:
"PACKAGE-NAME": "PACKAGE-URL"
Substitua o seguinte:
- 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 o seguinte:
- REGISTRY-SCOPE com o nome do pacote.
REGISTRY-SCOPE tem de corresponder ao âmbito do registo
definido no ficheiro
.nmprc
no seu repositório. - PACKAGE-NAME com o nome do pacote.
- PACKAGE-URL com o URL do repositório de pacotes
tar.gz
, por exemplo,https://github.com/user/sample-package-repository/archive/master.tar.gz
.
- REGISTRY-SCOPE com o nome do pacote.
REGISTRY-SCOPE tem de corresponder ao âmbito do registo
definido no ficheiro
Clique em Instalar pacotes.
O exemplo de código seguinte mostra o pacote de dimensões que mudam lentamente de código aberto público adicionado ao ficheiro .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"
}
}
```
Importe uma função ou uma constante de pacote para um ficheiro JavaScript no Dataform
Para usar uma função ou uma constante de um pacote num ficheiro JavaScript no Dataform, primeiro tem de a importar para o ficheiro.
Para importar uma função ou uma constante de um pacote para um ficheiro JavaScript, siga estes passos:
- No espaço de trabalho, no painel Ficheiros, selecione um ficheiro
.js
no qual quer usar o pacote. No ficheiro, 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 da constante que quer usar, declarada em
module.exports
no ficheiroindex.js
do pacote. - Substitua PACKAGE-NAME pelo nome do pacote que quer usar.
- Substitua EXPORT-NAME pelo nome da função ou da constante que quer usar, declarada em
O exemplo de código seguinte mostra a função getDomain
do pacote postoffice
importada e usada num ficheiro JavaScript:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
const { getDomain } = require("postoffice");
getDomain();
Importe um pacote completo para um ficheiro JavaScript no Dataform
Para importar todo o pacote para um ficheiro JavaScript em vez de importar funções ou constantes selecionadas para um ficheiro JavaScript, siga estes passos:
- No espaço de trabalho, no painel Ficheiros, selecione um ficheiro
.js
no qual quer usar o pacote. No ficheiro, 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 quer usar.
O exemplo de código seguinte mostra a função getDomain
do pacote postoffice
importado usado num ficheiro JavaScript:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
const postoffice = require("postoffice");
postoffice.getDomain();
Importe uma função ou uma constante de pacote para um ficheiro SQLX no Dataform
Para usar uma função ou uma constante de um pacote num ficheiro SQLX, primeiro tem de a importar para o ficheiro.
Para importar uma função ou uma constante de um pacote para um ficheiro SQLX, siga estes passos:
- No seu espaço de trabalho, no painel Ficheiros, selecione um ficheiro
.sqlx
no qual quer usar o pacote. No ficheiro, introduza o seguinte bloco
js
:js { const { EXPORT-NAME } = require("PACKAGE-NAME"); }
- Substitua EXPORT-NAME pelo nome da função ou da constante que quer usar, declarada em
module.exports
no ficheiro do pacoteindex.js
. - Substitua PACKAGE-NAME pelo nome do pacote que quer usar.
- Substitua EXPORT-NAME pelo nome da função ou da constante que quer usar, declarada em
O exemplo de código seguinte mostra a função getDomain
do pacote postoffice
importado num bloco js
e usado numa declaração SELECT
num ficheiro SQLX:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
config {
type: "table",
}
js {
const { getDomain } = require("postoffice");
}
SELECT ${getDomain("email")} as test
Importe um pacote completo para um ficheiro SQLX no Dataform
Para importar todo o pacote para um ficheiro SQLX em vez de importar funções ou constantes selecionadas para um ficheiro JavaScript, siga estes passos:
- No seu espaço de trabalho, no painel Ficheiros, selecione um ficheiro
.sqlx
no qual quer usar o pacote. No ficheiro, 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 quer usar.
O exemplo de código seguinte mostra o pacote postoffice
importado num bloco js
e a respetiva função getDomain
usada numa declaração SELECT
num ficheiro SQLX:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
config {
type: "table",
}
js {
const postoffice = require("postoffice");
}
SELECT ${postoffice.getDomain("email")} as test
Autentique um pacote privado
Esta secção mostra como autenticar um pacote NPM privado no Dataform para permitir a respetiva instalação num repositório do Dataform.
Para instalar um pacote NPM privado num repositório do Dataform e usá-lo para desenvolver o seu fluxo de trabalho, tem de autenticar primeiro o pacote no Dataform. O processo de autenticação é diferente para o primeiro pacote privado num repositório e um pacote privado subsequente num repositório.
Autentique o primeiro pacote privado num repositório do Dataform
Para autenticar pacotes NPM privados no Dataform, tem de fazer o seguinte antes de instalar o primeiro pacote NPM privado num repositório do Dataform:
Crie um Secret do Secret Manager dedicado ao armazenamento de tokens de autenticação de pacotes NPM privados no repositório do Dataform.
- Adicione o token de autenticação do pacote, obtido no seu registo do NPM, ao segredo.
Tem de armazenar todos os tokens de autenticação dos pacotes NPM privados no seu repositório num único segredo. Tem de criar um segredo dedicado por repositório do Dataform. O segredo tem de estar no formato JSON.
Carregue o segredo para o repositório do Dataform.
Crie um ficheiro
.npmrc
e adicione o token de autenticação do pacote ao ficheiro.O token de autenticação no ficheiro
.npmrc
tem de corresponder ao token de autenticação no segredo carregado.
Depois de autenticar o pacote NPM privado, pode instalar o pacote no repositório do Dataform.
Crie um segredo para a autenticação de pacotes privados
Para autenticar pacotes NPM privados num repositório do Dataform, tem de criar um segredo do Secret Manager e definir tokens de autenticação para todos os pacotes privados que quer instalar no repositório do Dataform no segredo. Defina um símbolo de autenticação para cada pacote NPM privado e armazene todos os símbolos de autenticação num único segredo para cada repositório. O segredo tem de estar no formato JSON.
Para criar um segredo com tokens de autenticação para pacotes NPM privados, siga estes passos:
No Secret Manager, crie um segredo.
- No campo Valor secreto, introduza um ou vários tokens de autenticação no seguinte formato:
{ "AUTHENTICATION_TOKEN_NAME": "TOKEN_VALUE" }
Substitua o seguinte:
- AUTHENTICATION_TOKEN_NAME: um nome exclusivo para o token que identifica o pacote que autentica.
- TOKEN_VALUE: o valor do token de autenticação, obtido no seu registo do NPM.
Conceda acesso ao segredo à sua conta de serviço do Dataform.
A sua conta de serviço do Dataform está no seguinte formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
- Ao conceder acesso, certifique-se de que concede a função
roles/secretmanager.secretAccessor
à sua conta de serviço do Dataform.
- Ao conceder acesso, certifique-se de que concede a função
Carregue o segredo para a autenticação de pacotes privados num repositório do Dataform
Antes de instalar um pacote NPM privado num repositório do Dataform pela primeira vez, carregue o seu segredo que contém o token de autenticação do pacote para o repositório.
Para carregar o segredo com tokens de autenticação de pacotes NPM privados para um repositório do Dataform, siga estes passos:
Na Google Cloud consola, aceda à página Dataform.
Selecione o repositório no qual quer instalar pacotes NPM privados.
Na página do repositório, clique em Definições > Configurar pacotes NPM privados.
No painel Adicionar token secreto do pacote NPM, no menu Secreto, selecione o seu segredo que contém tokens de autenticação para pacotes NPM privados.
Clique em Guardar.
Crie um ficheiro .npmrc
para a autenticação de pacotes privados
Para autenticar pacotes NPM privados num repositório do Dataform,
tem de criar um ficheiro .npmrc
de nível superior no repositório. Tem de armazenar tokens de autenticação para todos os pacotes NPM privados a serem instalados no repositório no ficheiro .npmrc
. Os tokens de autenticação no ficheiro .npmrc
têm de corresponder aos tokens de autenticação no segredo carregado para o repositório. Para mais informações
acerca dos ficheiros .npmrc
, consulte a documentação npmrc.
Para criar um ficheiro de nível superior .npmrc
no seu repositório, siga estes passos:
Na Google Cloud consola, aceda à página Dataform.
Selecione o repositório no qual quer instalar pacotes NPM privados e, em seguida, selecione um espaço de trabalho.
No painel Ficheiros, clique em
Mais e, de seguida, clique em Criar ficheiro.No painel Criar novo ficheiro, faça o seguinte:
No campo Adicionar um caminho de ficheiro, introduza
.npmrc
.Clique em Criar ficheiro.
Adicione um token de autenticação ao ficheiro .npmrc
num repositório do Dataform
Para autenticar um pacote NPM privado num repositório do Dataform que já contenha um segredo com tokens de autenticação de pacotes e um ficheiro .npmrc
, tem de adicionar o token de autenticação do pacote privado ao ficheiro .npmrc
no repositório.
No ficheiro .npmrc
, tem de definir o âmbito do seu registo do NPM e adicionar o token de autenticação para o pacote privado acedido nesse âmbito. Para mais informações sobre os ficheiros .npmrc
, consulte a documentação npmrc.
O token de autenticação no ficheiro .npmrc
tem de corresponder ao token de autenticação no segredo carregado para o repositório.
Para adicionar um token de autenticação ao ficheiro .npmrc
num repositório do Dataform, siga estes passos:
Na Google Cloud consola, aceda à página Dataform.
Selecione o repositório no qual quer instalar pacotes NPM privados e, em seguida, selecione um espaço de trabalho.
No painel Ficheiros, selecione o ficheiro
.npmrc
.No ficheiro
.npmrc
, defina o âmbito do registo NPM e o token de autenticação para o pacote privado no seguinte formato:@REGISTRY-SCOPE:registry=NPM-REGISTRY-URL NPM-REGISTRY-URL:_authToken=$AUTHENTICATION-TOKEN
Substitua o seguinte:
- REGISTRY-SCOPE: o âmbito do registo do NPM ao qual quer aplicar o token de autenticação.
- NPM-REGISTRY-URL: o URL do seu registo do NPM, por exemplo,
https://npm.pkg.github.com
. - AUTHENTICATION-TOKEN: o token de autenticação para o pacote NPM privado. O token de autenticação no ficheiro
.npmrc
tem de corresponder ao token de autenticação no segredo carregado. O token de autenticação é fornecido como uma variável de ambiente no ficheiro.npmrc
, por isso, certifique-se de que adiciona os parênteses de abertura${
e de fecho}
.
Pode introduzir vários tokens de autenticação.
O exemplo de código seguinte mostra um token de autenticação para um pacote NPM privado adicionado ao ficheiro .npmrc
num repositório do Dataform:
@company:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${AUTHENTICATION_TOKEN}
Autentique um pacote privado subsequente num repositório do Dataform
Para autenticar um pacote NPM privado num repositório do Dataform que já contém um segredo com tokens de autenticação de pacotes e um ficheiro .npmrc
, siga estes passos:
No Secret Manager, liste os segredos e selecione o segredo que armazena tokens de autenticação de pacotes NPM privados do seu repositório.
Adicione uma nova versão ao segredo.
O Dataform usa a versão mais recente do segredo por predefinição.
- Adicione o token de autenticação para o pacote privado ao valor secreto no seguinte formato:
{ "AUTHENTICATION_TOKEN_NAME": "TOKEN_VALUE" }
Substitua o seguinte:
- AUTHENTICATION_TOKEN_NAME: um nome exclusivo para o token que identifica o pacote que autentica.
- TOKEN_VALUE: o valor do token de autenticação, obtido no seu registo do NPM.
Pode adicionar vários tokens de autenticação em simultâneo.
No Dataform, adicione o token de autenticação ao ficheiro
.npmrc
no seu repositório.
Depois de autenticar o pacote NPM privado, pode instalar o pacote no repositório do Dataform.
Crie um pacote
Esta secção mostra como criar um pacote JavaScript personalizado que pode usar para desenvolver fluxos de trabalho no Dataform.
Para criar um pacote que possa reutilizar em vários repositórios do Dataform, tem de criar um repositório do Dataform dedicado ao pacote e associá-lo a um repositório Git de terceiros para o disponibilizar a outros repositórios do Dataform.
Em seguida, tem de criar um ficheiro index.js
de nível superior e adicionar o conteúdo do pacote exportável, como funções e constantes, ao ficheiro. Para ver um exemplo
de um pacote criado no Dataform, consulte
dataform-package-base
no GitHub.
Depois de criar o pacote, pode instalá-lo num repositório do Dataform diferente e usar os conteúdos exportáveis no pacote, como constantes e funções, para desenvolver fluxos de trabalho.
Em alternativa à criação de um pacote, pode reutilizar funções e constantes JavaScript num único repositório do Dataform com inclusões. Para mais informações, consulte o artigo Reutilize variáveis e funções com inclusões no Dataform.
Para criar o seu próprio pacote com código JavaScript que pode reutilizar no Dataform, siga estes passos no seu espaço de trabalho:
No painel Ficheiros, clique em
Mais.Clique em Criar ficheiro.
No painel Criar novo ficheiro, faça o seguinte:
No campo Adicionar um caminho de ficheiro, introduza
index.js
.Clique em Criar ficheiro.
No ficheiro
index.js
, introduza o código JavaScript que quer que o seu pacote exporte.Crie constantes no seguinte formato:
const CONSTANT_NAME = CONSTANT_VALUE; module.exports = { CONSTANT_NAME };
Substitua o seguinte:
CONSTANT_NAME
: o nome da sua constanteCONSTANT_VALUE
: o valor da sua constante
Crie funções no seguinte formato:
function FUNCTION_NAME(PARAMETERS) { FUNCTION_BODY } module.exports = { FUNCTION_NAME }
Substitua o seguinte:
FUNCTION_NAME
: o nome da sua função.PARAMETERS
: os parâmetros da sua função.FUNCTION_BODY
: o código que quer que a função execute.
Opcional: clique em Formatar.
Opcional: no diretório
definitions
, adicione o código do seu pacote que não vai ser exportado.
O seguinte exemplo de código do pacote mostra o ficheiro 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 }
O que se segue?
- Para saber como gerir o pacote principal do Dataform necessário, consulte o artigo Faça a gestão do pacote principal do Dataform.
- Para saber mais sobre os pacotes no Dataform, consulte o artigo Reutilize código em vários repositórios com pacotes.
- Para saber como escrever variáveis e funções JavaScript que pode reutilizar no Dataform, consulte o artigo Reutilize variáveis e funções com inclusões no Dataform.