Workflow in Dataform erstellen und ausführen

Diese Kurzanleitung richtet sich an Data Engineers und Datenanalysten, die Datentransformationen in BigQuery verwalten möchten. In dieser Kurzanleitung erfahren Sie, wie Sie einen Dataform-Workflow mit Dataform Core erstellen und ausführen. Dataform Core ist ein SQL-basiertes Framework, mit dem Rohdaten in kuratierte, getestete und dokumentierte Daten-Assets umgewandelt werden. Mit Dataform können Sie Ihre Datenmodellierungspipelines in einem zentralen Repository entwickeln und versionieren, um Zuverlässigkeit und Skalierbarkeit zu gewährleisten.

In dieser Kurzanleitung wird beschrieben, wie Sie in Dataform einen Workflow erstellen und in BigQuery ausführen:

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery and Dataform APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery and Dataform APIs.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen aller Aufgaben in dieser Kurzanleitung 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.

Erforderliche Rollen zuweisen

Wenn Sie Workflows in BigQuery ausführen möchten, können Sie ein benutzerdefiniertes Dienstkonto oder Ihr Google-Konto verwenden.

Ihr benutzerdefiniertes Dienstkonto muss die folgenden erforderlichen Rollen haben:

  • BigQuery-Datenbearbeiter (roles/bigquery.dataEditor) für Projekte oder bestimmte BigQuery-Datasets, für die Dataform sowohl Lese- als auch Schreibzugriff benötigt. Dazu gehört in der Regel das Projekt, in dem Ihr Dataform-Repository gehostet wird.
  • BigQuery Data Viewer (roles/bigquery.dataViewer) für Projekte oder bestimmte BigQuery-Datasets, auf die Dataform schreibgeschützten Zugriff benötigt.
  • BigQuery-Jobnutzer (roles/bigquery.jobUser) für das Projekt, in dem sich Ihr Dataform-Repository befindet.

Damit Dataform Ihr benutzerdefiniertes Dienstkonto verwenden kann, muss der Standard-Dataform-Dienst-Agent die folgenden Rollen für die benutzerdefinierte Dienstkontoressource haben:

So weisen Sie diese Rollen zu:

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

    IAM aufrufen

  2. Klicken Sie auf Zugriff erlauben.

  3. Geben Sie im Feld Neue Hauptkonten die ID Ihres benutzerdefinierten Dienstkontos ein.

  4. Wählen Sie im Menü Rolle auswählen die folgenden Rollen einzeln aus. Verwenden Sie für jede zusätzliche Rolle Weitere Rolle hinzufügen:

    • BigQuery-Dateneditor
    • BigQuery-Datenbetrachter
    • BigQuery-Jobnutzer
  5. Klicken Sie auf Speichern.

  6. Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.

    Zur Seite „Dienstkonten“

  7. Wählen Sie Ihr benutzerdefiniertes Dienstkonto aus.

  8. Rufen Sie Prinzipale mit Zugriff auf und klicken Sie auf Zugriff gewähren.

  9. Geben Sie im Feld Neue Hauptkonten die ID Ihres Dataform-Standarddienst-Agents ein.

    Die ID Ihres Dataform-Standarddienst-Agents hat das folgende Format:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    

    Ersetzen Sie PROJECT_NUMBER durch die numerische ID IhresGoogle Cloud -Projekts. Sie finden Ihre Google Cloud Projekt-ID imGoogle Cloud Console-Dashboard. Weitere Informationen finden Sie unter Projektname, ‑nummer und ‑ID ermitteln.

  10. Fügen Sie in der Liste Rolle auswählen die folgenden Rollen hinzu:

    • Dienstkontonutzer
    • Ersteller von Dienstkonto-Token
  11. Klicken Sie auf Speichern.

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Dataform den erforderlichen Zugriff gewähren.

Dataform-Repository erstellen

Ein Dataform-Repository ist eine Ressource, die ein Git-Repository mit Dataform-Projektcode darstellt, der zum Entwickeln, zur Versionsverwaltung und zum Orchestrieren von Workflows verwendet wird. Wählen Sie eine der folgenden Optionen aus, um ein Repository zu erstellen:

Console

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

    Zu Dataform

  2. Klicken Sie auf Repository erstellen.

  3. Führen Sie auf der Seite Repository erstellen die folgenden Schritte aus:

    1. Geben Sie im Feld Repository-ID den Wert quickstart-repository ein.

    2. Wählen Sie in der Liste Region die Option europe-west4 aus.

    3. Wählen Sie in der Liste Dienstkonto ein benutzerdefiniertes Dienstkonto für das Repository aus.

    4. Erzwingen Sie im Abschnitt Prüfungen auf Berechtigung „actAs“ Berechtigungsprüfungen für Nutzeraktionen für das Repository.

    5. Klicken Sie auf Erstellen.

    6. Klicken Sie auf Zu Repositories.

Sie haben ein Dataform-Repository erstellt. Als Nächstes können Sie einen Entwicklungsarbeitsbereich erstellen und initialisieren.

API

Verwenden Sie zum Erstellen eines Repositorys die Methode projects.locations.repositories.create.

Führen Sie die API-Anfrage mit den folgenden Informationen aus:

  • Endpunkt: POST https://dataform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/repositories
  • Abfrageparameter: repositoryId=REPOSITORY_ID

Alternativ können Sie im Terminal den folgenden curl-Befehl ausführen:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{"serviceAccount": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"}' \
  "https://dataform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/repositories?repositoryId=REPOSITORY_ID"

Ersetzen Sie Folgendes:

  • PROJECT_ID: Die eindeutige Kennung desGoogle Cloud -Projekts, in dem Sie das Dataform-Repository erstellen möchten.
  • LOCATION: die Google Cloud -Region, in der Sie das Repository erstellen möchten, z. B. europe-west4.
  • REPOSITORY_ID: Die eindeutige Kennung für Ihr neues Dataform-Repository, z. B. quickstart-repository.
  • SERVICE_ACCOUNT_NAME: die ID des benutzerdefinierten Dienstkontos, das zum Ausführen von BigQuery-Jobs erstellt wurde.

Entwicklungsarbeitsbereich erstellen und initialisieren

Ein Dataform-Arbeitsbereich ist eine isolierte Entwicklungsumgebung, ähnlich einem Git-Branch, in der Sie Code bearbeiten und kompilieren können. Wählen Sie eine der folgenden Optionen aus, um einen Arbeitsbereich zu erstellen:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ → Dataform auf.

    Zu Dataform

  2. Klicken Sie auf quickstart-repository.

  3. Klicken Sie auf  Entwicklungsarbeitsbereich erstellen.

  4. Führen Sie im Fenster Entwicklungsarbeitsbereich erstellen die folgenden Schritte aus:

    1. Geben Sie im Feld Workspace-ID den Wert quickstart-workspace ein.

    2. Klicken Sie auf Erstellen.

    Die Seite „Entwicklerarbeitsbereich“ wird angezeigt.

  5. Klicken Sie auf Arbeitsbereich initialisieren.

API

  1. Verwenden Sie zum Erstellen eines Dataform-Arbeitsbereichs die Methode projects.locations.repositories.workspaces.create.

    Führen Sie die API-Anfrage mit den folgenden Informationen aus:

    • Endpunkt: POST https://dataform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/workspaces
    • Abfrageparameter: workspaceId=WORKSPACE_ID

    Alternativ können Sie im Terminal den folgenden curl-Befehl ausführen:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d "{}" \
      "https://dataform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/workspaces?workspaceId=WORKSPACE_ID"
    

    Ersetzen Sie WORKSPACE_ID durch die eindeutige Kennung für Ihren Dataform-Entwicklungsarbeitsbereich, z. B. feature-branch-1.

  2. Um Ihren Arbeitsbereich mit der erforderlichen Konfiguration zu initialisieren, erstellen Sie eine lokale Datei mit dem Namen workflow_settings.yaml und fügen Sie die folgende Konfiguration ein:

    defaultProject: PROJECT_ID
    defaultDataset: dataform
    dataformCoreVersion: CORE_VERSION
    

    Ersetzen Sie CORE_VERSION durch die aktuelle stabile (nicht Beta-)Version von Dataform Core, z. B. 3.0.43. Die aktuelle Version finden Sie unter Releases.

  3. Führen Sie im Terminal den folgenden Befehl aus, um den Dateiinhalt in einen einzelnen fortlaufenden String zu codieren:

    base64 -w 0 workflow_settings.yaml
    
  4. Kopieren Sie den resultierenden Ausgabestring, um ihn im Platzhalter SETTINGS_DEFINITION zu verwenden, falls Sie sich später in diesen Schritten für die Verwendung des alternativen Befehls curl entscheiden.

  5. Verwenden Sie die Methode projects.locations.repositories.workspaces.writeFile, um die Konfigurationsdatei in Ihrem Arbeitsbereich zu erstellen.

    Führen Sie die API-Anfrage mit den folgenden Informationen aus:

    • Endpunkt: POST https://dataform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/workspaces/WORKSPACE_ID:writeFile

    Alternativ können Sie im Terminal den folgenden curl-Befehl ausführen:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "path": "workflow_settings.yaml",
        "contents": "SETTINGS_DEFINITION"
      }' \
      "https://dataform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/workspaces/WORKSPACE_ID:writeFile"
    

    Ersetzen Sie SETTINGS_DEFINITION durch den Inhalt der YAML-Datei als Base64-codierten String.

Ansicht erstellen

Eine Dataform-Ansicht ist ein Asset, das in einer SQLX-Datei definiert ist. Damit können Sie Daten transformieren. Sie dient als Quelle für andere Tabellen oder Ansichten in Ihrem Workflow. Wählen Sie eine der folgenden Optionen aus, um eine Ansicht zu erstellen und zu definieren, die Sie später als Datenquelle für eine Tabelle verwenden:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ → Dataform auf.

    Zu Dataform

  2. Klicken Sie auf quickstart-repository und dann auf quickstart-workspace.

  3. Klicken Sie im Bereich Dateien neben definitions/ auf das Menü  Mehr.

  4. Klicken Sie auf Datei erstellen.

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

    1. Geben Sie im Feld Dateipfad hinzufügen definitions/quickstart-source.sqlx ein.

    2. Klicken Sie auf Datei erstellen.

  6. Maximieren Sie im Bereich Dateien den Ordner „definitions“.

  7. Klicken Sie auf definitions/quickstart-source.sqlx.

  8. Geben Sie in die Datei das folgende Code-Snippet ein:

    config {
      type: "view"
    }
    
    SELECT
      "apples" AS fruit,
      2 AS count
    UNION ALL
    SELECT
      "oranges" AS fruit,
      5 AS count
    UNION ALL
    SELECT
      "pears" AS fruit,
      1 AS count
    UNION ALL
    SELECT
      "bananas" AS fruit,
      0 AS count
    
  9. Klicken Sie auf Format.

API

Wenn Sie eine Ansicht erstellen möchten, müssen Sie zuerst den Inhalt Ihrer SQLX-Datei für die API-Anfrage vorbereiten.

  1. Erstellen Sie eine lokale Datei mit dem Namen quickstart-source.sqlx und fügen Sie das folgende SQL-Code-Snippet ein:

    config {
      type: "view"
    }
    
    SELECT
      "apples" AS fruit,
      2 AS count
    UNION ALL
    SELECT
      "oranges" AS fruit,
      5 AS count
    UNION ALL
    SELECT
      "pears" AS fruit,
      1 AS count
    UNION ALL
    SELECT
      "bananas" AS fruit,
      0 AS count
    
  2. Führen Sie im Terminal den folgenden Befehl aus, um den Dateiinhalt in einen einzelnen fortlaufenden String zu codieren:

    base64 -w 0 quickstart-source.sqlx
    
  3. Kopieren Sie den resultierenden Ausgabestring, um ihn im Feld VIEW_DEFINITION in Ihrem JSON-Anfragetext zu verwenden.

  4. Verwenden Sie die Methode projects.locations.repositories.workspaces.writeFile, um die Ansichtsdefinitionsdatei in Ihrem Arbeitsbereich zu erstellen und zu definieren.

    Führen Sie die API-Anfrage mit den folgenden Informationen aus:

    • Endpunkt: POST https://dataform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/workspaces/WORKSPACE_ID:writeFile
    • Anfragetext:

      {
        "path": "definitions/quickstart-source.sqlx",
        "contents": "VIEW_DEFINITION"
      }
      

    Alternativ können Sie den Inhalt des Anfragetexts in Ihrem Terminal in einer lokalen Datei mit dem Namen write_view.json speichern und dann den folgenden curl-Befehl ausführen:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d @write_view.json \
      "https://dataform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/repositories/REPOSITORY_ID/workspaces/WORKSPACE_ID:writeFile"
    

    Ersetzen Sie VIEW_DEFINITION durch den Inhalt der SQLX-Datei als Base64-codierten String.

Tabelle erstellen

Eine Dataform-Tabelle ist ein Asset, das in einer SQLX-Datei definiert ist und in dem transformierte Abfrageergebnisse im Rahmen Ihres Workflows in BigQuery gespeichert werden. Wählen Sie eine der folgenden Optionen aus, um eine Tabelle für Ihren Workflow zu definieren:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ → Dataform auf.

    Zu Dataform

  2. Klicken Sie auf quickstart-repository und dann auf quickstart-workspace.

  3. Klicken Sie im Bereich Dateien neben definitions/ auf das Menü Mehr und wählen Sie Datei erstellen aus.

  4. Geben Sie im Feld Dateipfad hinzufügen definitions/quickstart-table.sqlx ein.

  5. Klicken Sie auf Datei erstellen.

  6. Maximieren Sie im Bereich Dateien das Verzeichnis definitions/.

  7. Wählen Sie quickstart-table.sqlx aus und geben Sie dann den folgenden Tabellentyp und die SELECT-Anweisung ein:

    config {
      type: "table"
    }
    
    SELECT
      fruit,
      SUM(count) as count
    FROM ${ref("quickstart-source")}
    GROUP BY 1
    
  8. Klicken Sie auf Format.

Nachdem Sie den Tabellentyp definiert haben, löst Dataform einen Abfragevalidierungsfehler aus, da quickstart-source noch nicht in BigQuery vorhanden ist. Dieser Fehler wird behoben, wenn Sie den Workflow ausführen.

API

Wenn Sie eine Tabelle erstellen möchten, müssen Sie zuerst den Inhalt Ihrer SQLX-Datei für die API-Anfrage vorbereiten.

  1. Erstellen Sie eine lokale Datei mit dem Namen quickstart-table.sqlx und fügen Sie das folgende SQL-Code-Snippet ein:

    config {
      type: "table"
    }
    
    SELECT
      fruit,
      SUM(count) as count