Paket in Dataform erstellen

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

Um ein Paket zu erstellen, das Sie in mehreren Dataform-Repositories wiederverwenden können, müssen Sie ein dediziertes Dataform-Repository für das Paket erstellen und es mit einem Git-Repository eines Drittanbieters verbinden, um es anderen Dataform-Repositories zur Verfügung zu stellen.

Anschließend müssen Sie eine index.js-Datei auf oberster Ebene erstellen und ihr den exportierbaren Paketinhalt 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 das Paket in einem anderen Dataform-Repository installieren und die exportierbaren Inhalte des Pakets wie Konstanten und Funktionen zum Entwickeln von SQL-Workflows verwenden.

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

Hinweise

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

    Zur Seite „Dataform“

  2. Erstellen Sie ein Dataform-Repository für Ihr Paket. Gleichen Sie den Repository-Namen mit dem Namen des Pakets ab.

  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 Admin (roles/dataform.admin) für Repositories zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Pakets benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

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

Paket in Dataform erstellen

Wenn Sie ein eigenes Paket mit JavaScript-Code erstellen möchten, den Sie in Dataform wiederverwenden können, führen Sie in Ihrem Arbeitsbereich die folgenden Schritte aus:

  1. Klicken Sie im Bereich Dateien auf das Dreipunkt-Menü.

  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 index.js ein.

    3. Klicken Sie auf Datei erstellen.

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

    1. Erstellen Sie Konstanten im folgenden Format:

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

      Ersetzen Sie Folgendes:

      • CONSTANT_NAME: der Name der Konstante
      • CONSTANT_VALUE: der Wert Ihrer Konstante
    2. Erstellen Sie Funktionen im folgenden Format:

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

    Ersetzen Sie Folgendes:

    • FUNCTION_NAME: Der Name Ihrer Funktion.
    • PARAMETERS: die Parameter der Funktion
    • FUNCTION_BODY: der Code, den die Funktion ausführen soll
  4. Optional: Klicken Sie auf Format.

  5. Optional: Fügen Sie im Verzeichnis definitions den Code Ihres Pakets hinzu, der nicht exportiert wird.

  6. Führen Sie ein Commit und push Ihrer Änderungen durch.

Das folgende Codebeispiel für das Paket zeigt 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