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.

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 es 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 den exportierbaren Paketinhalt hinzufügen, z. B. Funktionen und Konstanten. 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 exportierbaren Inhalte des Pakets wie Konstanten und Funktionen verwenden, um SQL-Workflows zu entwickeln.

Alternativ zum Erstellen eines Pakets können Sie JavaScript-Funktionen und ‑konstanten mithilfe von Includes in einem einzigen Dataform-Repository wiederverwenden. Weitere Informationen finden Sie unter Code in einem einzelnen Repository mit Includes wiederverwenden.

Hinweis

  1. Öffnen Sie in der Google Cloud Console die Seite Dataform.

    Zur Seite „Dataform“

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

  3. Verbinden Sie das Repository mit einem Drittanbieter-Git-Repository, in dem Ihr Paket gehostet 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 zuzuweisen, damit Sie die Berechtigungen erhalten, die Sie zum Erstellen eines Pakets benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

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

Paket in Dataform erstellen

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

  1. Klicken Sie im Bereich Dateien auf das Dreipunkt-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 index.js ein.

    3. Klicken Sie auf Datei erstellen.

  3. Geben Sie in der Datei index.js den JavaScript-Code ein, den Sie aus dem Paket exportieren möchten.

    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 der 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 Ihrer Funktion
    • FUNCTION_BODY: Der Code, den die Funktion ausführen soll
  4. Optional: Klicken Sie auf Formatieren.

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

  6. Führen Sie einen Commit aus und übertragen Sie die Änderungen per Push.

Das folgende Paketcodebeispiel zeigt die index.js-Datei des postoffice-Pakets, das die getDomain-Funktion 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