Créer un package dans Dataform

Ce document explique comment créer un package JavaScript personnalisé que vous pouvez utiliser pour développer des workflows SQL dans Dataform.

Pour créer un package que vous pouvez réutiliser dans plusieurs dépôts Dataform, vous devez créer un dépôt Dataform dédié au package et le connecter à un dépôt Git tiers pour le rendre disponible dans d'autres dépôts Dataform.

Vous devez ensuite créer un fichier index.js de premier niveau et y ajouter le contenu de votre package exportable, tel que des fonctions et des constantes. Pour obtenir un exemple de package créé dans Dataform, consultez la section concernant dataform-package-base sur GitHub.

Une fois le package créé, vous pouvez l'installer dans un autre dépôt Dataform et utiliser le contenu exportable du package, comme les constantes et les fonctions, pour développer des workflows SQL.

Au lieu de créer un package, vous pouvez réutiliser des fonctions et des constantes JavaScript dans un seul dépôt Dataform avec des inclusions. Pour en savoir plus, consultez Réutiliser des variables et des fonctions avec des inclusions dans Dataform.

Avant de commencer

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

    Accéder à la page Dataform

  2. Créez un dépôt Dataform dédié à votre package. Faites correspondre le nom du dépôt avec le nom de votre package.

  3. Connectez le dépôt à un dépôt Git tiers qui hébergera votre package.

  4. Créez et initialisez un espace de travail dans le dépôt Dataform.

Rôles requis

Pour obtenir les autorisations nécessaires pour créer un package, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur Dataform (roles/dataform.admin) pour les dépôts. 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.

Créer un package dans Dataform

Pour créer votre propre package avec du code JavaScript que vous pouvez réutiliser dans Dataform, procédez comme suit dans votre espace de travail:

  1. Dans le volet Fichiers, cliquez sur le menu Plus .

  2. Cliquez sur Créer un fichier.

    1. Dans le volet Create new file (Créer un fichier), procédez comme suit:

    2. Dans le champ Ajouter un chemin d'accès au fichier, saisissez index.js.

    3. Cliquez sur Créer un fichier.

  3. Dans le fichier index.js, saisissez le code JavaScript que vous souhaitez que votre package exporte.

    1. Créez des constantes au format suivant:

      const CONSTANT_NAME = CONSTANT_VALUE;
      module.exports = { CONSTANT_NAME };
      

      Remplacez les éléments suivants :

      • CONSTANT_NAME: nom de votre constante
      • CONSTANT_VALUE: valeur de votre constante
    2. Créez des fonctions au format suivant:

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

    Remplacez les éléments suivants :

    • FUNCTION_NAME : nom de votre fonction
    • PARAMETERS: paramètres de votre fonction.
    • FUNCTION_BODY: code que la fonction doit exécuter.
  4. (Facultatif) Cliquez sur Format.

  5. Facultatif: Dans le répertoire definitions, ajoutez le code de votre package qui ne sera pas exporté.

  6. Validez et push vos modifications.

L'exemple de code de package suivant montre le fichier index.js du package postoffice qui exporte la fonction 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 }

Étapes suivantes