Para crear un paquete que puedas volver a usar 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.
Una vez que crees el paquete, podrás instalarlo en un repositorio de Dataform diferente y usar el contenido exportable del paquete, como constantes y funciones, para desarrollar flujos de trabajo de SQL.
Como alternativa a la creación de un paquete, puedes reutilizar las funciones y constantes de JavaScript en un solo repositorio de Dataform con inclusiones. Para obtener más información, consulta Cómo volver a usar el código en un solo repositorio con instrucciones de inclusión.
Antes de comenzar
En la Google Cloud consola, ve a la página Dataform.
Crea un repositorio de Dataform dedicado a tu paquete. Haz que el nombre del repositorio coincida 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.
Roles obligatorios
Para obtener los permisos que necesitas para crear un paquete, pídele a tu administrador que te otorgue el rol de IAM de administrador de Dataform (roles/dataform.admin
) en los 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 mediante roles personalizados o cualquier otro rol predefinido.
Crea un paquete en Dataform
Para crear tu propio paquete con código JavaScript que puedas volver a usar en Dataform, sigue estos pasos en tu lugar de trabajo:
En el panel Archivos, haz clic en el menú
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 JavaScript que deseas que exporte tu paquete.Crea constantes en el siguiente formato:
const CONSTANT_NAME = CONSTANT_VALUE; module.exports = { CONSTANT_NAME };
Reemplaza lo siguiente:
CONSTANT_NAME
: Es el nombre de tu constante.CONSTANT_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
: El nombre de la funciónPARAMETERS
: Los parámetros de tu funciónFUNCTION_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 del 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 obtener información sobre cómo instalar tu paquete en un repositorio y cómo importar su contenido en archivos JavaScript o SQLX, consulta Cómo instalar un paquete en Dataform.
- Para obtener más información sobre los paquetes en Dataform, consulta Cómo volver a usar el código en varios repositorios con paquetes.
- Si deseas aprender a escribir variables y funciones de JavaScript que puedas reutilizar en Dataform, consulta Cómo volver a usar el código en un solo repositorio con inclusiones.