Instala un paquete en Dataform

En este documento, se muestra cómo instalar un paquete de JavaScript en un desde un repositorio de Dataform y, luego, impórtalos a un archivo JavaScript un archivo SQLX para usar el paquete en el desarrollo de 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 JavaScript o SQLX, debes importar contenido seleccionado del paquete en el archivo. También puedes importar un conjunto en 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 utilices Opciones de dependencies de package.json, por ejemplo, >version.

  • Prueba nuevas versiones de paquetes en un entorno que no sea de producción. Más información sobre la configuración de diferentes entornos de ciclo de vida de código, consulta Administra 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, autenticar el paquete privado

Roles obligatorios

A fin de obtener los permisos que necesitas para importar un paquete, solicita a tu administrador que te otorgue el Es el rol de IAM de 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.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Instala un paquete en un repositorio de Dataform

Para instalar un paquete en un repositorio de Dataform, debes hacer lo siguiente: agrégala como una dependencia en el archivo package.json. El formato de la dependencia del 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, 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 con la versión más reciente del el paquete público de NPM publicado. Para evitar problemas con la instalación de paquetes, especificar de manera 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 tercero de paquetes, 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 definida en el archivo .nmprc de tu repositorio.
      • PACKAGE-NAME por el nombre del paquete
      • PACKAGE-URL por la URL tar.gz del paquete repositorio, por ejemplo, https://github.com/user/sample-package-repository/archive/master.tar.gz.
  3. Haz clic en Install packages.

  4. Confirmación y envía los cambios.

En la siguiente muestra de código, se muestra el código abierto Se agregó un paquete de dimensiones que cambia lentamente 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 desde un paquete dentro de un archivo JavaScript en Dataform, primero debes importarlo al archivo.

Para importar una función o una constante desde un paquete a un archivo JavaScript, sigue estos pasos:

  1. En tu espacio de trabajo, en el panel Files, selecciona un archivo .js en el cual en las que quieres 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 quieres usar, declarada en module.exports en el paquete index.js.
    2. Reemplaza PACKAGE-NAME por el nombre de del paquete que quieres usar.
  3. Confirmación y envía los cambios.

En la siguiente muestra de código, se observa la función getDomain de la Se importó el paquete postoffice y se usó 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

Importar todo el paquete a un archivo JavaScript en lugar de importarlo 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 la que quieres 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 quieres usar.
  3. Confirmación y envía los cambios.

En la siguiente muestra de código, se observa la función getDomain de la Se importó el paquete postoffice que se usó 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 importarlo al archivo.

Para importar una función o una constante desde un paquete a un archivo SQLX, sigue estos pasos:

  1. En tu lugar de trabajo, en el panel Files, selecciona un archivo .sqlx. en la que quieres 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. constante que quieras usar, declarada en module.exports en el archivo index.js del paquete.
    2. Reemplaza PACKAGE-NAME por el nombre del paquete. que quieres usar.
  3. Confirmación y envía los cambios.

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

Importar todo el paquete a un archivo SQLX en lugar de importarlo 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 la que quieres 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 quieres usar.
  3. Confirmación y envía los cambios.

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