Instala un paquete en Dataform

En este documento, se muestra cómo instalar un paquete de JavaScript en un repositorio de Dataform y cómo importarlo a un archivo JavaScript y a un archivo SQLX para usar el paquete y desarrollar flujos de trabajo de SQL en Dataform.

Para usar un paquete en Dataform, debes instalarlo en tu repositorio.

Puedes instalar los siguientes tipos de paquetes en Dataform:

Luego, para usar el paquete en un archivo de JavaScript o SQLX, debes importar al archivo el contenido seleccionado del paquete. También puedes importar un paquete completo a un archivo JavaScript o SQLX, en lugar del 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 de dependencies de package.json, como >version.

  • Prueba nuevas versiones de paquetes en un entorno que no sea de producción. Para obtener más información sobre la configuración de diferentes entornos del ciclo de vida del código, consulta Cómo administrar el ciclo de vida del código.

Antes de comenzar

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

    Ir a la página de Dataform

  2. Selecciona o crea un repositorio.

  3. Selecciona o crea un lugar de trabajo de desarrollo.

  4. Opcional: Para instalar un paquete privado, autentícalo.

Funciones obligatorias

Para obtener los permisos que necesitas para importar un paquete, pídele a tu administrador que te otorgue el editor de Dataform (roles/dataform.editor) en los lugares de trabajo. 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 a través de funciones personalizadas o, también, otras funciones predefinidas.

Instala un paquete en un repositorio de Dataform

Para instalar un paquete en un repositorio de Dataform, debes agregarlo como dependencia en el archivo package.json. El formato de la definición de dependencia en el archivo package.json depende del tipo de paquete. Si no tienes un archivo package.json porque tu archivo workflow_settings.yaml especifica tu dataformCoreVersion, quita el dataformCoreVersion de workflow_settings.yaml y, luego, crea un archivo package.json y agrega @dataform/core como dependencia.

Para instalar un paquete en un repositorio de Dataform, sigue estos pasos:

  1. En tu lugar de trabajo, en el panel Files, selecciona package.json.
  2. Agrega el paquete al bloque dependencies:

    1. Agrega un paquete de NPM público publicado en 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 de paquetes, especifica de forma explícita la versión, por ejemplo, 3.0.0.
    2. Agrega un paquete de NPM público no publicado en el siguiente formato:

      "PACKAGE-NAME": "PACKAGE-URL"
      

      Reemplaza lo siguiente:

      • PACKAGE-NAME por el nombre del paquete
      • PACKAGE-URL por la URL tar.gz del repositorio de paquetes de terceros, por ejemplo https://github.com/user/sample-package-repository/archive/master.tar.gz.
    3. Agrega un paquete de NPM privado autenticado en 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 alcance del registro definido en el archivo .nmprc de tu repositorio.
      • PACKAGE-NAME por el nombre del paquete
      • PACKAGE-URL por la URL tar.gz del repositorio de paquetes, por ejemplo, https://github.com/user/sample-package-repository/archive/master.tar.gz
  3. Haz clic en Install packages.

  4. Confirma y push los cambios.

En la siguiente muestra de código, se observa el paquete público de dimensiones que cambia lentamente y el paquete público de código abierto que se agregó 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 de paquete o una constante 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 JavaScript, sigue estos pasos:

  1. En tu lugar de trabajo, en el panel Files, selecciona un archivo .js en el que desees usar el paquete.
  2. En el archivo, importa una función o una constante en el siguiente formato:

    const { EXPORT-NAME } = require("PACKAGE-NAME");
    
    1. Reemplaza EXPORT-NAME por el nombre de la función o constante que deseas usar, declarado en module.exports en el archivo index.js del paquete.
    2. Reemplaza PACKAGE-NAME por el nombre del paquete que deseas usar.
  3. Confirma y push los cambios.

En la siguiente muestra de código, se observa la función getDomain del paquete postoffice importado y usado en un archivo JavaScript:

/*
 * Contents of postoffice index.js:
 * module.exports = { getDomain };
 */

const { getDomain } = require("postoffice");
getDomain();

Importa un paquete completo a un archivo 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:

  1. En tu lugar de trabajo, en el panel Files, selecciona un archivo .js en el que desees usar el paquete.
  2. En el archivo, importa el paquete en el siguiente formato:

    const CONSTANT-NAME = require("PACKAGE-NAME");
    
    1. Reemplaza CONSTANT-NAME por un nombre para la constante.
    2. Reemplaza PACKAGE-NAME por el nombre del paquete que deseas usar.
  3. Confirma y push los cambios.

En la siguiente muestra de código, se observa 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 de paquete o una constante a un archivo SQLX en Dataform

Para usar una función o una constante desde 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:

  1. En tu lugar de trabajo, en el panel Files, selecciona un archivo .sqlx en el que desees usar el paquete.
  2. En el archivo, ingresa el siguiente bloque js:

    js {
      const { EXPORT-NAME } = require("PACKAGE-NAME");
    }
    
    1. Reemplaza EXPORT-NAME por el nombre de la función o la constante que quieres usar, declarada en module.exports en el archivo index.js del paquete.
    2. Reemplaza PACKAGE-NAME por el nombre del paquete que deseas usar.
  3. Confirma y push los cambios.

En la siguiente muestra de código, se observa la función getDomain del paquete postoffice importada en un bloque js y utilizada 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:

  1. En tu lugar de trabajo, en el panel Files, selecciona un archivo .sqlx en el que desees usar el paquete.
  2. En el archivo, importa el paquete en el siguiente formato:

    js {
      const CONSTANT-NAME = require("PACKAGE-NAME");
    }
    
    1. Reemplaza CONSTANT-NAME por un nombre para la constante.
    2. Reemplaza PACKAGE-NAME por el nombre del paquete que deseas usar.
  3. Confirma y push los cambios.

En la siguiente muestra de código, se observa el paquete postoffice importado en un bloque js y su función getDomain utilizada 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

¿Qué sigue?