Installer un package dans Dataform

Ce document explique comment installer un package JavaScript dans un Dataform, l'importer dans un fichier JavaScript un fichier SQLX pour utiliser le package afin de développer des workflows SQL dans Dataform.

Pour utiliser un package dans Dataform, vous devez l'installer dans votre dépôt.

Vous pouvez installer les types de packages suivants dans Dataform:

Ensuite, pour utiliser le package dans un fichier JavaScript ou SQLX, vous devez importer le contenu sélectionné du package dans le fichier. Vous pouvez aussi importer l'intégralité package dans un fichier JavaScript ou SQLX au lieu de son contenu sélectionné.

Pour éviter les problèmes d’installation de packages dans votre environnement de production, nous vous recommandons de procéder comme suit:

  • Spécifiez explicitement la version du package dans package.json, par exemple, 3.0.0. Ne pas utiliser d'autres dependencies options de package.json (par exemple, >version).

  • Testez de nouvelles versions de package dans un environnement hors production. Pour en savoir plus, sur la configuration des différents environnements de cycle de vie du code, consultez Gérer le cycle de vie du code

Avant de commencer

  1. Dans la console Google Cloud, accédez à la page Dataform page.

    Accéder à la page Dataform

  2. Sélectionnez ou créez un dépôt.

  3. Sélectionnez ou créez un espace de travail de développement.

  4. Facultatif: Pour installer un package privé, authentifier le package privé.

Rôles requis

Pour obtenir les autorisations dont vous avez besoin pour importer un package, demandez à votre administrateur de vous accorder le Rôle IAM Éditeur Dataform (roles/dataform.editor) sur les espaces de travail. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Installer un package dans un dépôt Dataform

Pour installer un package dans un dépôt Dataform, vous devez : Ajoutez-le en tant que dépendance dans le fichier package.json. Format de la dépendance dans le fichier package.json dépend du type de package. Si vous n'avez pas de fichier package.json, car votre fichier workflow_settings.yaml spécifie votre dataformCoreVersion, supprimez dataformCoreVersion de workflow_settings.yaml, puis créez un fichier package.json et ajoutez @dataform/core en tant que dépendance.

Pour installer un package dans un dépôt Dataform, procédez comme suit:

  1. Dans votre espace de travail, dans le volet Fichiers, sélectionnez package.json.
  2. Ajoutez le package au bloc dependencies:

    1. Ajoutez un package NPM public publié au format suivant:

      "PACKAGE-NAME": "PACKAGE-VERSION"
      

      Remplacez les éléments suivants :

      • PACKAGE-NAME par le nom du package.
      • PACKAGE-VERSION avec la dernière version de un package NPM public publié. Pour éviter les problèmes d’installation de packages, spécifiez explicitement la version (par exemple, 3.0.0).
    2. Ajoutez un package NPM public non publié au format suivant:

      "PACKAGE-NAME": "PACKAGE-URL"
      

      Remplacez les éléments suivants :

      • PACKAGE-NAME par le nom du package.
      • PACKAGE-URL par l'URL tar.gz du tiers. dépôt de packages, par exemple https://github.com/user/sample-package-repository/archive/master.tar.gz.
    3. Ajoutez un package NPM privé authentifié au format suivant:

      "REGISTRY-SCOPE/PACKAGE-NAME": "PACKAGE-URL"
      

      Remplacez les éléments suivants :

      • REGISTRY-SCOPE par le nom du package. REGISTRY-SCOPE doit correspondre au champ d'application du registre défini dans le fichier .nmprc de votre dépôt.
      • PACKAGE-NAME par le nom du package.
      • PACKAGE-URL par l'URL tar.gz du package ; (par exemple, https://github.com/user/sample-package-repository/archive/master.tar.gz
  3. Cliquez sur Install packages (Installer les packages).

  4. Commit et transmettre vos modifications.

L'exemple de code suivant montre la bibliothèque publique Open Source Package de dimensions à évolution lente ajouté au fichier .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"
   }
 }
 ```

Importer une fonction ou une constante de package dans un fichier JavaScript dans Dataform

Pour utiliser une fonction ou une constante d'un package à l'intérieur d'un fichier JavaScript dans Dataform, vous devez d'abord l'importer dans le fichier.

Pour importer une fonction ou une constante d'un package dans un fichier JavaScript, procédez comme suit:

  1. Dans le volet Fichiers de votre espace de travail, sélectionnez un fichier .js dans lequel vous souhaitez utiliser le package.
  2. Dans le fichier, importez une fonction ou une constante au format suivant:

    const { EXPORT-NAME } = require("PACKAGE-NAME");
    
    1. Remplacez EXPORT-NAME par le nom de la fonction ou constante que vous souhaitez utiliser, déclarée dans module.exports dans la index.js du package.
    2. Remplacez PACKAGE-NAME par le nom de le package que vous souhaitez utiliser.
  3. Commit et transmettre vos modifications.

L'exemple de code suivant montre la fonction getDomain du Package postoffice importé et utilisé dans un fichier JavaScript:

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

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

Importer un package entier dans un fichier JavaScript dans Dataform

Pour importer l'ensemble du package dans un fichier JavaScript au lieu d'importer constantes ou fonctions sélectionnées dans un fichier JavaScript, procédez comme suit:

  1. Dans le volet Fichiers de votre espace de travail, sélectionnez un fichier .js dans que vous voulez utiliser le package.
  2. Dans le fichier, importez le package au format suivant:

    const CONSTANT-NAME = require("PACKAGE-NAME");
    
    1. Remplacez CONSTANT-NAME par le nom de la constante.
    2. Remplacez PACKAGE-NAME par le nom du package. que vous souhaitez utiliser.
  3. Commit et transmettre vos modifications.

L'exemple de code suivant montre la fonction getDomain du a importé le package postoffice utilisé dans un fichier JavaScript:

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

const postoffice = require("postoffice");
postoffice.getDomain();

Importer une fonction ou une constante de package dans un fichier SQLX dans Dataform

Pour utiliser une fonction ou une constante d'un package dans un fichier SQLX, vous devez d'abord l'importer dans le fichier.

Pour importer une fonction ou une constante d'un package dans un fichier SQLX, procédez comme suit:

  1. Dans le volet Fichiers de votre espace de travail, sélectionnez un fichier .sqlx. dans lequel vous souhaitez utiliser le package.
  2. Dans le fichier, saisissez le bloc js suivant:

    js {
      const { EXPORT-NAME } = require("PACKAGE-NAME");
    }
    
    1. Remplacez EXPORT-NAME par le nom de la fonction. ou constante que vous souhaitez utiliser, déclarée dans module.exports. dans le fichier index.js du package.
    2. Remplacez PACKAGE-NAME par le nom du package. que vous souhaitez utiliser.
  3. Commit et transmettre vos modifications.

L'exemple de code suivant montre la fonction getDomain du Package postoffice importé dans un bloc js et utilisé dans un SELECT dans un fichier SQLX:

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

config {
    type: "table",
}

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

SELECT ${getDomain("email")} as test

Importer un package entier dans un fichier SQLX dans Dataform

Pour importer le package entier dans un fichier SQLX au lieu d’importer constantes ou fonctions sélectionnées dans un fichier JavaScript, procédez comme suit:

  1. Dans le volet Fichiers de votre espace de travail, sélectionnez un fichier .sqlx. dans lequel vous souhaitez utiliser le package.
  2. Dans le fichier, importez le package au format suivant:

    js {
      const CONSTANT-NAME = require("PACKAGE-NAME");
    }
    
    1. Remplacez CONSTANT-NAME par le nom de la constante.
    2. Remplacez PACKAGE-NAME par le nom du package. que vous souhaitez utiliser.
  3. Commit et transmettre vos modifications.

L'exemple de code suivant montre le package postoffice importé dans un bloc js et sa fonction getDomain utilisée dans un SELECT dans un fichier SQLX:

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

config {
    type: "table",
}

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

SELECT ${postoffice.getDomain("email")} as test

Étape suivante