Este documento te muestra cómo hacer lo siguiente:
- Instalar un paquete de JavaScript en un repositorio de Dataform
- Autentica un paquete de NPM privado para habilitar su instalación en un repositorio.
- Crea un paquete de JavaScript personalizado que puedas usar para desarrollar flujos de trabajo.
Antes de comenzar
En la consola de Google Cloud , ve a la página Dataform.
Realiza una o ambas de las siguientes acciones:
- Para instalar un paquete en un repositorio o autenticar un paquete de NPM privado
para habilitar su instalación, sigue estos pasos:
- Selecciona o crea un repositorio.
- Selecciona o crea un espacio de trabajo de desarrollo.
- Opcional: Para instalar un paquete privado, autentica el paquete privado.
- Si tu repositorio no contiene un archivo
package.json, creapackage.jsony mueve el paquete principal de Dataform.
- Para crear un paquete, sigue estos pasos:
- Crea un repositorio de Dataform dedicado a tu paquete. Haz coincidir el nombre del repositorio con el nombre de tu paquete.
- Conecta el repositorio a un repositorio de Git de terceros que alojará tu paquete.
- Crea e inicializa un espacio de trabajo en el repositorio de Dataform.
- Para instalar un paquete en un repositorio o autenticar un paquete de NPM privado
para habilitar su instalación, sigue estos pasos:
Asegúrate de tener los permisos necesarios para completar las tareas de este documento.
Roles obligatorios
Para obtener los permisos que necesitas para completar las tareas de este documento, pídele a tu administrador que te otorgue los siguientes roles de IAM:
- Editor de Dataform (
roles/dataform.editor) en espacios de trabajo y repositorios - Administrador de Dataform (
roles/dataform.admin) en repositorios
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Instala un paquete
En esta sección, se muestra cómo instalar un paquete de JavaScript y, luego, importarlo a un archivo JavaScript y a un archivo SQLX para que puedas usar el paquete y desarrollar flujos de trabajo en Dataform.
Para usar un paquete en Dataform, debes instalarlo en tu repositorio.
Puedes instalar los siguientes tipos de paquetes en Dataform:
- Paquetes de npm públicos publicados
- Paquetes de NPM públicos no publicados
- Paquetes de NPM privados autenticados
Luego, para usar el paquete en un archivo JavaScript o SQLX, debes importar el contenido seleccionado del paquete al archivo. También puedes importar un paquete completo a un archivo JavaScript o SQLX en lugar de su contenido seleccionado.
Para evitar problemas con la instalación de paquetes en tu entorno de producción, te recomendamos que hagas lo siguiente:
Especifica de forma explícita la versión del paquete en
package.json, por ejemplo,3.0.0. No uses otras opciones dedependenciesdepackage.json, por ejemplo,>version.Prueba las versiones nuevas de los paquetes en un entorno que no sea de producción. Para obtener más información sobre cómo configurar diferentes entornos del ciclo de vida del flujo de trabajo, consulta Prácticas recomendadas para el ciclo de vida del flujo de trabajo.
Agrega un paquete como dependencia
Para instalar un paquete dentro de un repositorio de Dataform, debes
agregarlo como una dependencia en el archivo package.json:
- En tu espacio de trabajo, en el panel Archivos, selecciona
package.json. Agrega el paquete al bloque
dependencies:Agrega un paquete de NPM público publicado con el siguiente formato:
"PACKAGE-NAME": "PACKAGE-VERSION"Reemplaza lo siguiente:
- PACKAGE-NAME por el nombre del paquete.
- PACKAGE-VERSION por la versión más reciente del
paquete de NPM público publicado. Para evitar problemas con la instalación del paquete,
especifica la versión de forma explícita, por ejemplo,
3.0.0.
Agrega un paquete de NPM público no publicado con el siguiente formato:
"PACKAGE-NAME": "PACKAGE-URL"Reemplaza lo siguiente:
- PACKAGE-NAME por el nombre del paquete.
- PACKAGE-URL por la URL
tar.gzdel repositorio de paquetes de terceros, por ejemplo,https://github.com/user/sample-package-repository/archive/master.tar.gz.
Agrega un paquete de NPM privado autenticado con el siguiente formato:
"REGISTRY-SCOPE/PACKAGE-NAME": "PACKAGE-URL"Reemplaza lo siguiente:
- REGISTRY-SCOPE por el nombre del paquete.
REGISTRY-SCOPE debe coincidir con el permiso del registro
definido en el archivo
.npmrcde tu repositorio. - PACKAGE-NAME por el nombre del paquete.
- PACKAGE-URL por la URL de
tar.gzdel repositorio de paquetes, por ejemplo,https://github.com/user/sample-package-repository/archive/master.tar.gz.
- REGISTRY-SCOPE por el nombre del paquete.
REGISTRY-SCOPE debe coincidir con el permiso del registro
definido en el archivo
Haz clic en Instalar paquetes.
En la siguiente muestra de código, se observa el paquete público de código abierto
Slowly changing dimensions agregado al archivo .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"
}
}
```
Importa una función o constante de paquete a un archivo JavaScript en Dataform
Para usar una función o una constante de un paquete dentro de un archivo JavaScript en Dataform, primero debes importarla al archivo.
Para importar una función o una constante de un paquete a un archivo de JavaScript, sigue estos pasos:
- En el panel Archivos de tu espacio de trabajo, selecciona un archivo
.jsen el que quieras usar el paquete. En el archivo, importa una función o una constante con el siguiente formato:
const { EXPORT-NAME } = require("PACKAGE-NAME");- Reemplaza EXPORT-NAME por el nombre de la función o
constante que deseas usar, declarada en
module.exportsen el archivo del paqueteindex.js. - Reemplaza PACKAGE-NAME por el nombre del paquete que deseas usar.
- Reemplaza EXPORT-NAME por el nombre de la función o
constante que deseas usar, declarada en
En la siguiente muestra de código, se observa la función getDomain del paquete postoffice importada y usada en un archivo JavaScript:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
const { getDomain } = require("postoffice");
getDomain();
Importa un paquete completo a un archivo de JavaScript en Dataform
Para importar todo el paquete a un archivo JavaScript en lugar de importar funciones o constantes seleccionadas a un archivo JavaScript, sigue estos pasos:
- En el panel Archivos de tu espacio de trabajo, selecciona un archivo
.jsen el que quieras usar el paquete. En el archivo, importa el paquete con el siguiente formato:
const CONSTANT-NAME = require("PACKAGE-NAME");- Reemplaza CONSTANT-NAME por un nombre para la constante.
- Reemplaza PACKAGE-NAME por el nombre del paquete que deseas usar.
En la siguiente muestra de código, se indica la función getDomain del paquete postoffice importado que se usa en un archivo JavaScript:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
const postoffice = require("postoffice");
postoffice.getDomain();
Importa una función o constante de paquete a un archivo SQLX en Dataform
Para usar una función o una constante de un paquete dentro de un archivo SQLX, primero debes importarla al archivo.
Para importar una función o una constante de un paquete a un archivo SQLX, sigue estos pasos:
- En el panel Archivos de tu espacio de trabajo, selecciona un archivo
.sqlxen el que quieras usar el paquete. En el archivo, ingresa el siguiente bloque
js:js { const { EXPORT-NAME } = require("PACKAGE-NAME"); }- Reemplaza EXPORT-NAME por el nombre de la función
o constante que deseas usar, declarada en
module.exportsen el archivoindex.jsdel paquete. - Reemplaza PACKAGE-NAME por el nombre del paquete que deseas usar.
- Reemplaza EXPORT-NAME por el nombre de la función
o constante que deseas usar, declarada en
En la siguiente muestra de código, se indica la función getDomain del paquete postoffice importado en un bloque js y usado en una sentencia SELECT en un archivo SQLX:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
config {
type: "table",
}
js {
const { getDomain } = require("postoffice");
}
SELECT ${getDomain("email")} as test
Importa un paquete completo a un archivo SQLX en Dataform
Para importar todo el paquete a un archivo SQLX en lugar de importar las funciones o constantes seleccionadas a un archivo JavaScript, sigue estos pasos:
- En el panel Archivos de tu espacio de trabajo, selecciona un archivo
.sqlxen el que quieras usar el paquete. En el archivo, importa el paquete con el siguiente formato:
js { const CONSTANT-NAME = require("PACKAGE-NAME"); }- Reemplaza CONSTANT-NAME por un nombre para la constante.
- Reemplaza PACKAGE-NAME por el nombre del paquete que deseas usar.
En la siguiente muestra de código, se indica el paquete postoffice importado en
un bloque js y su función getDomain usada en una
sentencia SELECT en un archivo SQLX:
/*
* Contents of postoffice index.js:
* module.exports = { getDomain };
*/
config {
type: "table",
}
js {
const postoffice = require("postoffice");
}
SELECT ${postoffice.getDomain("email")} as test
Autentica un paquete privado
En esta sección, se muestra cómo autenticar un paquete de NPM privado en Dataform para habilitar su instalación en un repositorio de Dataform.
Para instalar un paquete de NPM privado en un repositorio de Dataform y usarlo para desarrollar tu flujo de trabajo, primero debes autenticar el paquete en Dataform. El proceso de autenticación es diferente para el primer paquete privado de un repositorio y un paquete privado posterior de un repositorio.
Autentica el primer paquete privado en un repositorio de Dataform
Para autenticar paquetes de NPM privados en Dataform, debes hacer lo siguiente antes de instalar el primer paquete de NPM privado en un repositorio de Dataform:
Crea un Secret de Secret Manager dedicado a almacenar tokens de autenticación de paquetes de NPM privados en el repositorio de Dataform.
- Agrega el token de autenticación del paquete, obtenido de tu registro de NPM, al secreto.
Debes almacenar todos los tokens de autenticación de los paquetes de NPM privados en tu repositorio en un solo Secret. Debes crear un secreto dedicado por repositorio de Dataform. El secreto debe estar en formato JSON.
Sube el Secret al repositorio de Dataform.
Crea un archivo
.npmrcy agrégale el token de autenticación del paquete.El token de autenticación en el archivo
.npmrcdebe coincidir con el token de autenticación en el secreto subido.
Después de autenticar el paquete de NPM privado, puedes instalarlo en el repositorio de Dataform.
Crea un Secret para la autenticación de paquetes privados
Para autenticar paquetes de NPM privados en un repositorio de Dataform, debes crear un Secret de Secret Manager y definir tokens de autenticación para todos los paquetes privados que quieras instalar en el repositorio de Dataform dentro del Secret. Define un token de autenticación para cada paquete de NPM privado y almacena todos los tokens de autenticación en un solo Secret para cada repositorio. El secreto debe estar en formato JSON.
Para crear un Secret con tokens de autenticación para paquetes de NPM privados, sigue estos pasos:
En Secret Manager, crea un secreto.
- En el campo Valor del Secret, ingresa uno o varios tokens de autenticación con el siguiente formato:
{ "AUTHENTICATION_TOKEN_NAME": "TOKEN_VALUE" }Reemplaza lo siguiente:
- AUTHENTICATION_TOKEN_NAME: Es un nombre único para el token que identifica el paquete que autentica.
- TOKEN_VALUE: Es el valor del token de autenticación, que se obtiene de tu registro de NPM.
Otorga acceso al secreto al agente de servicio de Dataform.
El ID del agente de servicio de Dataform tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.- Cuando otorgues acceso, asegúrate de otorgar el rol
roles/secretmanager.secretAccessoral agente de servicio de Dataform.
- Cuando otorgues acceso, asegúrate de otorgar el rol
Si usas tokens de autenticación de corta duración, como los tokens de acceso de OAuth para Artifact Registry, debes actualizar el secreto de forma periódica con una versión nueva antes de que venza el token. De forma predeterminada, Dataform usa la versión más reciente del secreto. Para obtener información sobre cómo automatizar las actualizaciones de secretos, consulta Rota tu secreto.
Sube el secreto para la autenticación de paquetes privados a un repositorio de Dataform
Antes de instalar un paquete de NPM privado en un repositorio de Dataform por primera vez, sube el Secret que contiene el token de autenticación del paquete al repositorio.
Para subir el Secret con tokens de autenticación de paquetes de NPM privados a un repositorio de Dataform, sigue estos pasos:
En la consola de Google Cloud , ve a la página Dataform.
Selecciona el repositorio en el que quieres instalar paquetes de NPM privados.
En la página del repositorio, haz clic en Configuración > Configurar paquetes privados de NPM.
En el panel Agregar token secreto de paquete de NPM, en el menú Secret, selecciona el secret que contiene los tokens de autenticación para los paquetes de NPM privados.
Haz clic en Guardar.
Crea un archivo .npmrc para la autenticación de paquetes privados
Para autenticar paquetes privados de NPM en un repositorio de Dataform,
debes crear un archivo .npmrc de nivel superior en el repositorio. Debes almacenar
los tokens de autenticación de todos los paquetes privados de NPM que se instalarán en el
repositorio dentro del archivo .npmrc. Los tokens de autenticación del archivo
.npmrc deben coincidir con los tokens de autenticación del
secreto subido al repositorio. Para obtener más información
sobre los archivos .npmrc, consulta la documentación de npmrc.
Para crear un archivo .npmrc de nivel superior en tu repositorio, sigue estos pasos:
En la consola de Google Cloud , ve a la página Dataform.
Selecciona el repositorio en el que deseas instalar paquetes de NPM privados y, luego, selecciona un espacio de trabajo.
En el panel Archivos, haz clic en Más y, luego, en Crear archivo.
En el panel Crear un archivo nuevo, haz lo siguiente:
En el campo Agregar una ruta de acceso al archivo, ingresa
.npmrc.Haz clic en Crear archivo.
Agrega un token de autenticación al archivo .npmrc en un repositorio de Dataform
Para autenticar un paquete de NPM privado en un repositorio de Dataform
que ya contiene un Secret con tokens de autenticación de paquetes y un archivo .npmrc,
debes agregar el token de autenticación del paquete privado al
archivo .npmrc en el repositorio.
En el archivo .npmrc, debes definir el alcance de tu registro de NPM y agregar
el token de autenticación para el paquete privado al que se accede en ese alcance. Para obtener más
información sobre los archivos .npmrc, consulta la
documentación de npmrc.
El token de autenticación en el archivo .npmrc debe coincidir con el token de autenticación en el secreto subido al repositorio.
Para agregar un token de autenticación al archivo .npmrc en un repositorio de Dataform, sigue estos pasos:
En la consola de Google Cloud , ve a la página Dataform.
Selecciona el repositorio en el que deseas instalar paquetes de NPM privados y, luego, selecciona un espacio de trabajo.
En el panel Archivos, selecciona el archivo
.npmrc.En el archivo
.npmrc, define el alcance del registro de NPM y el token de autenticación para el paquete privado en el siguiente formato:@REGISTRY-SCOPE:registry=NPM-REGISTRY-URL NPM-REGISTRY-URL:_authToken=$AUTHENTICATION-TOKENReemplaza lo siguiente:
- REGISTRY-SCOPE: Es el permiso del registro de NPM al que deseas aplicar el token de autenticación.
- NPM-REGISTRY-URL: Es la URL de tu registro de NPM, por ejemplo,
https://npm.pkg.github.com. - AUTHENTICATION-TOKEN: Es el token de autenticación para el
paquete privado de NPM. El token de autenticación en el archivo
.npmrcdebe coincidir con el token de autenticación en el secreto subido. El token de autenticación se proporciona como una variable de entorno en el archivo.npmrc, por lo que debes asegurarte de agregar los corchetes de apertura${y cierre}.
Puedes ingresar varios tokens de autenticación.
En la siguiente muestra de código, se indica un token de autenticación para un paquete de NPM privado
agregado al archivo .npmrc en un repositorio de Dataform:
@company:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${AUTHENTICATION_TOKEN}
Autentica un paquete privado posterior en un repositorio de Dataform
Para autenticar un paquete de NPM privado en un repositorio de Dataform
que ya contiene un Secret con tokens de autenticación de paquetes y un archivo .npmrc,
sigue estos pasos:
En Secret Manager, enumera los secretos y selecciona el secreto que almacena los tokens de autenticación de los paquetes de NPM privados de tu repositorio.
Agrega una versión nueva al secreto.
Dataform usa la versión más reciente del secreto de forma predeterminada.
- Agrega el token de autenticación para el paquete privado al valor del Secret en el siguiente formato:
{ "AUTHENTICATION_TOKEN_NAME": "TOKEN_VALUE" }Reemplaza lo siguiente:
- AUTHENTICATION_TOKEN_NAME: Es un nombre único para el token que identifica el paquete que autentica.
- TOKEN_VALUE: Es el valor del token de autenticación, que se obtiene de tu registro de NPM.
Puedes agregar varios tokens de autenticación a la vez.
En Dataform, agrega el token de autenticación al archivo
.npmrcde tu repositorio.
Después de autenticar el paquete de NPM privado, puedes instalarlo en el repositorio de Dataform.
Cómo crear un paquete
En esta sección, se muestra cómo crear un paquete de JavaScript personalizado que puedes usar para desarrollar flujos de trabajo en Dataform.
Para crear un paquete que puedas reutilizar en varios repositorios de Dataform, debes crear un repositorio de Dataform dedicado al paquete y conectarlo a un repositorio de Git de terceros para que esté disponible para otros repositorios de Dataform.
Luego, debes crear un archivo index.js de nivel superior y agregar el contenido del paquete exportable, como funciones y constantes, al archivo. Para ver un ejemplo
de un paquete creado en Dataform, consulta
dataform-package-base
en GitHub.
Después de crear el paquete, puedes instalarlo en un repositorio de Dataform diferente y usar el contenido exportable del paquete, como constantes y funciones, para desarrollar flujos de trabajo.
Como alternativa a la creación de un paquete, puedes reutilizar funciones y constantes de JavaScript en un solo repositorio de Dataform con inclusiones. Para obtener más información, consulta Reutiliza variables y funciones con inclusiones en Dataform.
Para crear tu propio paquete con código de JavaScript que puedas reutilizar en Dataform, sigue estos pasos en tu espacio de trabajo:
En el panel Archivos, haz clic en Más.
Haz clic en Crear archivo.
En el panel Crear un archivo nuevo, haz lo siguiente:
En el campo Agregar una ruta de acceso al archivo, ingresa
index.js.Haz clic en Crear archivo.
En el archivo
index.js, ingresa el código de JavaScript que deseas que exporte tu paquete.Crea constantes con el siguiente formato:
const CONSTANT_NAME = CONSTANT_VALUE; module.exports = { CONSTANT_NAME };Reemplaza lo siguiente:
CONSTANT_NAME: el nombre de tu constanteCONSTANT_VALUE: Es el valor de tu constante.
Crea funciones con el siguiente formato:
function FUNCTION_NAME(PARAMETERS) { FUNCTION_BODY } module.exports = { FUNCTION_NAME }Reemplaza lo siguiente:
FUNCTION_NAME: Es el nombre de la función.PARAMETERS: Son los parámetros de tu función.FUNCTION_BODY: Es el código que deseas que ejecute la función.
Opcional: Haz clic en Formato.
Opcional: En el directorio
definitions, agrega el código de tu paquete que no se exportará.
En la siguiente muestra de código de paquete, se muestra el archivo index.js del
paquete postoffice que exporta la función 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 }
¿Qué sigue?
- Para aprender a administrar el paquete principal de Dataform requerido, consulta Administra el paquete principal de Dataform.
- Para obtener más información sobre los paquetes en Dataform, consulta Reutiliza código en varios repositorios con paquetes.
- Para aprender a escribir variables y funciones de JavaScript que puedes reutilizar en Dataform, consulta Reutiliza variables y funciones con inclusiones en Dataform.