Paket in Dataform erstellen

In diesem Dokument wird erläutert, wie Sie ein benutzerdefiniertes JavaScript-Paket erstellen, mit dem Sie SQL-Workflows in Dataform entwickeln können.

Wenn Sie ein Paket erstellen möchten, das Sie in mehreren Dataform-Repositories wiederverwenden können, müssen Sie ein Dataform-Repository speziell für das Paket erstellen und mit einem Drittanbieter-Git-Repository verbinden, um es für andere Dataform-Repositories verfügbar zu machen.

Anschließend müssen Sie eine index.js-Datei auf oberster Ebene erstellen und der Datei Ihre exportierbaren Paketinhalte wie Funktionen und Konstanten hinzufügen. Ein Beispiel für ein in Dataform erstelltes Paket finden Sie auf GitHub unter dataform-package-base.

Nachdem Sie das Paket erstellt haben, können Sie es in einem anderen Dataform-Repository installieren und die exportierten Inhalte des Pakets, z. B. Konstanten und Funktionen, verwenden, um SQL-Workflows zu entwickeln.

Alternativ zum Erstellen eines Pakets können Sie JavaScript-Funktionen und -Konstanten in einem einzelnen Dataform-Repository mit enthaltenen Elementen wiederverwenden. Weitere Informationen finden Sie unter Variablen und Funktionen mit „In Dataform einschließen“ wiederverwenden.

Hinweis

  1. Rufen Sie in der Google Cloud Console die Seite Dataform auf.

    Zur Dataform-Seite

  2. Erstellen Sie ein Dataform-Repository, das für Ihr Paket vorgesehen ist. Ordnen Sie den Repository-Namen dem Namen Ihres Pakets zu.

  3. Verbinden Sie das Repository mit dem Git-Repository eines Drittanbieters, das Ihr Paket hosten wird.

  4. Erstellen und initialisieren Sie einen Arbeitsbereich im Dataform-Repository.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Dataform-Administrator (roles/dataform.admin) für Repositories zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Pakets benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Paket in Dataform erstellen

So erstellen Sie ein eigenes Paket mit JavaScript-Code, den Sie in Dataform wiederverwenden können:

  1. Klicken Sie im Bereich Dateien auf das Menü Mehr.

  2. Klicken Sie auf Datei erstellen.

    1. Führen Sie im Bereich Neue Datei erstellen die folgenden Schritte aus:

    2. Geben Sie im Feld Dateipfad hinzufügen den Wert index.js ein.

    3. Klicken Sie auf Datei erstellen.

  3. Geben Sie in der Datei index.js den JavaScript-Code ein, den das Paket exportieren soll.

    1. Erstellen Sie Konstanten im folgenden Format:

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

      Dabei gilt:

      • CONSTANT_NAME durch den Namen Ihrer Konstante.
      • CONSTANT_VALUE durch den Wert Ihrer Konstante.
    2. Erstellen Sie Funktionen im folgenden Format:

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

    Dabei gilt:

    • FUNCTION_NAME durch den Namen der Funktion.
    • PARAMETERS durch die Parameter der Funktion.
    • FUNCTION_BODY durch den Code, den die Funktion ausführen soll.
  4. [Optional] Fügen Sie im Verzeichnis definitions Code des Pakets ein, der nicht exportiert wird.

  5. Commit durchführen und übertragen Sie die Änderungen.

Im folgenden Codebeispiel sehen Sie die Datei index.js des Pakets postoffice, das die Funktion getDomain exportiert:

// 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 }

Nächste Schritte