Crea un paquete en Dataform

En este documento, se muestra cómo crear un paquete de JavaScript personalizado que puedes usar para desarrollar flujos de trabajo de SQL en Dataform.

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 a fin de que esté disponible para otros repositorios de Dataform.

Luego, debes crear un archivo index.js de nivel superior y agregar el contenido exportable de tu paquete, 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, puedes instalarlo en un repositorio de Dataform diferente y usar el contenido exportable en el paquete, como constantes y funciones, para desarrollar flujos de trabajo de SQL.

Como alternativa a crear 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 Reutiliza variables y funciones con inclusiones en Dataform.

Antes de comenzar

  1. En la consola de Google Cloud, ve a la página Dataform.

    Ir a la página Dataform

  2. Crea un repositorio de Dataform dedicado a tu paquete. Haz coincidir el nombre del repositorio con el nombre de tu paquete.

  3. Conecta el repositorio a un repositorio de Git de terceros que alojará tu paquete.

  4. Crea y, luego, inicializa un lugar de trabajo en el repositorio de Dataform.

Funciones obligatorias

Si quieres 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.

Es posible que también puedas obtener los permisos necesarios mediante funciones personalizadas, o bien otras funciones predefinidas.

Crea un paquete en Dataform

Para crear tu propio paquete con código JavaScript que puedes volver a usar en Dataform, sigue estos pasos en tu lugar de trabajo:

  1. En el panel Files, haz clic en el menú Más.

  2. Haz clic en Crear archivo.

    1. En el panel Create new file, haz lo siguiente:

    2. En el campo Agregar una ruta de acceso al archivo, ingresa index.js.

    3. Haz clic en Crear archivo.

  3. En el archivo index.js, ingresa el código JavaScript que deseas que tu paquete exporte.

    1. 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.
    2. Crea funciones en el siguiente formato:

    function FUNCTION_NAME(PARAMETERS) { FUNCTION_BODY }
    
    module.exports = { FUNCTION_NAME }
    

    Reemplaza lo siguiente:

    • FUNCTION_NAME: 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.
  4. Opcional: Haz clic en Formato.

  5. Opcional: En el directorio definitions, agrega el código del paquete que no se exportará.

  6. Confirma y push los cambios.

En la siguiente muestra de código del paquete, se ve 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?