In diesem Dokument wird beschrieben, wie Sie in Dataform Folgendes tun:
- Ausführungen mit Workflowkonfigurationen planen
- Ausführungen mit Workflows und Cloud Scheduler planen
- Ausführungen mit Managed Service for Apache Airflow planen
- Ausführungen mit Cloud Build-Triggern automatisieren
In der folgenden Tabelle werden die Methoden verglichen:
| Methode | Ziel | Triggertyp |
|---|---|---|
| Workflowkonfigurationen | Standardmäßige, zeitbasierte Produktionsausführungen in Dataform. | Zeitbasiert |
| Workflows und Cloud Scheduler | Einfache, serverlose Orchestrierung von Dataform zusammen mit anderen APIs. | Zeitbasiert oder ereignisgesteuert |
| Managed Airflow | Komplexe Pipelines mit Abhängigkeiten außerhalb von BigQuery. | Zeitbasiert oder ereignisgesteuert |
| Cloud Build-Trigger | Automatisierung von Releases unmittelbar nach einem Git-Push. | Ereignisgesteuert |
Hinweis
So planen Sie Ausführungen mit Workflowkonfigurationen oder planen Sie Ausführungen mit Workflows und Cloud Scheduler:
Rufen Sie in der Google Cloud Console die Seite Dataform auf.
Wählen Sie ein Repository aus oder erstellen Sie eines.
Erstellen Sie eine Releasekonfiguration.
So planen Sie Ausführungen mit Managed Service for Apache Airflow:
- Wählen Sie ein Dataform-Repository aus oder erstellen Sie eines.
- Dataform Zugriff auf BigQuery gewähren
- Wählen Sie einen Dataform-Arbeitsbereich aus oder erstellen Sie einen.
- Erstellen Sie mindestens eine Tabelle.
- Erstellen Sie eine Managed Airflow 2-Umgebung.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen der Aufgaben in diesem Dokument benötigen:
- Dataform-Administrator (
roles/dataform.admin) für Repositories - Dienstkontonutzer (
roles/iam.serviceAccountUser) für das benutzerdefinierte Dienstkonto - Composer-Worker (
roles/composer.worker) für das Dienstkonto der Managed Airflow-Umgebung -
Ausführungen mit Cloud Build automatisieren:
- Service Account Admin (
roles/iam.serviceAccountAdmin) für das benutzerdefinierte Dienstkonto - Cloud Build-Bearbeiter (
roles/cloudbuild.builds.editor) für das Projekt
- Service Account Admin (
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.
Wenn Sie beim Erstellen einer Workflowkonfiguration ein benutzerdefiniertes Dienstkonto verwenden möchten, gewähren Sie Zugriff auf das benutzerdefinierte Dienstkonto.
Wenn Sie beim Erstellen einer Workflowkonfiguration Nutzeranmeldedaten für ein Google-Konto verwenden möchten, gewähren Sie Zugriff auf das Google-Konto.
Wenn Sie geplante Ausführungen für eine Workflowkonfiguration aktivieren möchten, müssen Sie dem Dataform-Standarddienst-Agent die Berechtigung iam.serviceAccounts.actAs für das benutzerdefinierte Dienstkonto erteilen, das in der Workflowkonfiguration verwendet wird. Diese Berechtigung ist in der Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) verfügbar. Weitere Informationen finden Sie unter Strikten ActAs-Modus verwenden.
Informationen zum Erhöhen der Sicherheit bei der Planung finden Sie unter Erweiterte Planungsberechtigungen implementieren.
Um zu verhindern, dass Nutzer Workflows mit Endnutzer-Anmeldedaten planen oder ausführen, können Administratoren der Organisation eine benutzerdefinierte Einschränkung für Organisationsrichtlinien erstellen, die das Festlegen von end_user_auth_config ablehnt.
Ausführungen mit Workflowkonfigurationen planen
In diesem Abschnitt erfahren Sie, wie Sie eine Workflowkonfiguration in Dataform erstellen, um Workflowausführungen zu planen und zu konfigurieren. Mit Workflowkonfigurationen können Sie Dataform-Workflows nach einem Zeitplan ausführen.
Workflowkonfigurationen
Wenn Sie Dataform-Ausführungen aller oder ausgewählter Workflow-Aktionen in BigQuery planen möchten, können Sie Workflow-Konfigurationen erstellen. In einer Workflowkonfiguration wählen Sie eine Kompilierungs-Release-Konfiguration aus, wählen Workflowaktionen für die Ausführung aus und legen den Ausführungszeitplan fest.
Während einer geplanten Ausführung Ihrer Workflowkonfiguration stellt Dataform dann die von Ihnen ausgewählten Aktionen aus dem neuesten Kompilierungsergebnis in Ihrer Release-Konfiguration in BigQuery bereit. Sie können die Ausführung einer Workflow-Konfiguration auch manuell mit den Dataform API-WorkflowConfigs auslösen.
Eine Dataform-Workflowkonfiguration enthält die folgenden Ausführungseinstellungen:
- ID der Workflowkonfiguration.
- Releasekonfiguration.
Dienstkonto.
Dies ist das benutzerdefinierte Dienstkonto, das mit der Workflowkonfiguration verknüpft ist. Sie können ein benutzerdefiniertes Dienstkonto auswählen, das mit Ihrem Google Cloud -Projekt verknüpft ist, oder manuell ein anderes Dienstkonto eingeben. Standardmäßig verwenden Workflowkonfigurationen dieselben Dienstkonten wie ihre Repositories.
Dienstkonto-Anmeldedaten sind die Standardautorisierungsmethode für die Erstellung und Ausführung von geplanten Workflowkonfigurationen.
Anmeldedaten für das Google-Konto
Die Anmeldedaten von Google-Konten sind die Standardautorisierungsmethode für die manuelle, nicht geplante Erstellung und Ausführung von Workflowkonfigurationen. Weitere Informationen finden Sie unter Google-Konto autorisieren.
Auszuführende Workflowaktionen:
- Alle Aktionen.
- Auswahl von Aktionen.
- Auswahl von Tags.
Zeitplan und Zeitzone ausführen.
Workflowkonfiguration erstellen
So erstellen Sie eine Dataform-Workflow-Konfiguration:
- Rufen Sie in Ihrem Repository Releases & Planung auf.
- Klicken Sie im Abschnitt Workflowkonfigurationen auf Erstellen.
Geben Sie im Bereich Workflowkonfiguration erstellen im Feld Konfigurations-ID eine eindeutige ID für die Workflowkonfiguration ein.
IDs dürfen nur Ziffern, Buchstaben, Bindestriche und Unterstriche enthalten.
Wählen Sie im Menü Release-Konfiguration eine Kompilierungs-Release-Konfiguration aus.
Autorisieren Sie im Abschnitt Authentifizierung die Workflowkonfiguration mit den Nutzeranmeldedaten Ihres Google-Kontos oder einem Dienstkonto.
Wenn Sie die Nutzeranmeldedaten Ihres Google-Kontos verwenden möchten, wählen Sie Mit meinen Nutzeranmeldedaten ausführen aus.
Optional: Wählen Sie im Abschnitt Erweiterte Zugriffsoptionen die zusätzlichen Dienste aus, die für Ihren Workflow erforderlich sind:
- Knowledge Catalog: Ermöglicht Aktualisierungen von Metadaten in Google Cloud Knowledge Catalog.
- Google Drive: Gewährt Lesezugriff auf Google Drive-Dateien.
- Bigtable: Ermöglicht Lesezugriff auf Google Bigtable-Daten.
Wenn Sie ein benutzerdefiniertes Dienstkonto verwenden möchten, wählen Sie Mit ausgewähltem Dienstkonto ausführen und dann das Dienstkonto aus, das mit Ihrem Google Cloud -Projekt verknüpft ist und auf das Sie Zugriff haben. Wenn Sie kein Dienstkonto auswählen, wird in der Workflowkonfiguration das Dienstkonto des Repositorys verwendet.
Optional: Geben Sie im Feld Häufigkeit des Zeitplans die Häufigkeit der Ausführungen im unix-cron-Format ein.
Damit Dataform das neueste Kompilierungsergebnis in der entsprechenden Release-Konfiguration ausführt, muss zwischen dem Zeitpunkt der Erstellung des Kompilierungsergebnisses und dem Zeitpunkt der geplanten Ausführung mindestens eine Stunde liegen.
Optional: Wählen Sie im Menü Zeitzone die Zeitzone für Ausführungen aus.
Die Standardzeitzone ist UTC.
Wählen Sie die auszuführenden Workflowaktionen aus:
- Wenn Sie den gesamten Workflow ausführen möchten, klicken Sie auf Alle Aktionen.
- Wenn Sie ausgewählte Aktionen im Workflow ausführen möchten, klicken Sie auf Auswahl von Aktionen und wählen Sie dann die Aktionen aus.
- Wenn Sie Aktionen mit ausgewählten Tags ausführen möchten, klicken Sie auf Auswahl von Tags und wählen Sie dann Tags aus.
- Optional: Wenn Sie ausgewählte Aktionen oder Tags und ihre Abhängigkeiten ausführen möchten, wählen Sie die Option Abhängigkeiten einschließen aus.
- Optional: Wenn Sie ausgewählte Aktionen oder Tags und ihre Abhängigkeiten ausführen möchten, wählen Sie die Option Abhängigkeiten einschließen aus.
Optional: Wenn Sie alle Tabellen von Grund auf neu erstellen möchten, wählen Sie die Option Mit vollständiger Aktualisierung ausführen aus.
Ohne diese Option aktualisiert Dataform inkrementelle Tabellen, ohne sie von Grund auf neu zu erstellen.
Optional: Legen Sie die Priorität des BigQuery-Abfragejobs mit der Option Als interaktiven Job mit hoher Priorität ausführen (Standardeinstellung) fest. Standardmäßig führt BigQuery Abfragen als interaktive Abfragejobs aus, die so schnell wie möglich gestartet werden sollen. Wenn Sie diese Option deaktivieren, werden die Abfragen als Batchabfragejobs mit niedrigerer Priorität ausgeführt.
Klicken Sie auf Erstellen. Wenn Sie als Authentifizierungsmethode Mit meinen Nutzeranmeldedaten ausführen ausgewählt haben, müssen Sie Ihr Google-Konto autorisieren.
In der folgenden Workflowkonfiguration werden beispielsweise jede Stunde Aktionen mit dem Tag hourly in der Zeitzone MESZ ausgeführt:
- Konfigurations-ID:
production-hourly - Releasekonfiguration: -
- Häufigkeit:
0 * * * * - Zeitzone:
Central European Summer Time (CEST) - Auswahl von Workflow-Aktionen: Auswahl von Tags, Tag
hourly
Google-Konto autorisieren
Wenn Sie die Ressource mit den Nutzeranmeldedaten Ihres Google-Kontos authentifizieren möchten, müssen Sie BigQuery-Pipelines manuell die Berechtigung erteilen, das Zugriffstoken für Ihr Google-Konto abzurufen und in Ihrem Namen auf die Quelldaten zuzugreifen. Sie können die manuelle Genehmigung über die OAuth-Dialogoberfläche erteilen. Wenn Sie Erweiterte Zugriffsoptionen auswählen, müssen Sie Zugriff auf diese Dienste gewähren, z. B. Google Drive oder Knowledge Catalog.
Sie müssen BigQuery-Pipelines nur einmal die Berechtigung erteilen.
So heben Sie die erteilte Berechtigung auf:
- Rufen Sie Ihre Google-Kontoseite auf.
- Klicken Sie auf BigQuery-Pipelines.
- Klicken Sie auf Zugriff entfernen.
Wenn Sie den Inhaber der Workflowkonfiguration durch Aktualisieren der Anmeldedaten ändern, ist auch eine manuelle Genehmigung erforderlich, falls der neue Inhaber des Google-Kontos noch nie eine Workflowkonfiguration erstellt hat.
Workflowkonfiguration bearbeiten
So bearbeiten Sie eine Workflow-Konfiguration:
- Rufen Sie in Ihrem Repository Releases & Planung auf.
- Klicken Sie neben der Workflowkonfiguration, die Sie bearbeiten möchten, auf das Menü Mehr und dann auf Bearbeiten.
- Bearbeiten Sie im Bereich Workflowkonfiguration bearbeiten die Einstellungen für die Workflowkonfiguration und klicken Sie dann auf Speichern.
Workflowkonfiguration löschen
So löschen Sie eine Workflowkonfiguration:
- Rufen Sie in Ihrem Repository Releases & Planung auf.
- Klicken Sie neben der Workflowkonfiguration, die Sie löschen möchten, auf das Menü Mehr und dann auf Löschen.
- Klicken Sie im Dialogfeld Releasekonfiguration löschen auf Löschen.
Ausführungen mit Workflows und Cloud Scheduler planen
In diesem Abschnitt erfahren Sie, wie Sie Ausführungen von Dataform-Workflows mit Workflows und Cloud Scheduler planen.
Informationen zu geplanten Workflowausführungen
Sie können die Häufigkeit der Ausführungen Ihres Dataform-Workflows festlegen, indem Sie einen Cloud Scheduler-Job erstellen, der einen Workflows-Workflow auslöst. Workflows führt Dienste in einem von Ihnen definierten Orchestrierungs-Workflow aus.
Workflows führt Ihren Dataform-Workflow in einem zweistufigen Prozess aus. Zuerst wird der Code Ihres Dataform-Repositorys von Ihrem Git-Anbieter abgerufen und in ein Kompilierungsergebnis kompiliert. Anschließend wird das Kompilierungsergebnis verwendet, um einen Dataform-Workflow zu erstellen und ihn in der von Ihnen festgelegten Häufigkeit auszuführen.
Geplanten Orchestrierungsworkflow erstellen
Wenn Sie Ausführungen Ihres Dataform-Workflows planen möchten, erstellen Sie mit Workflows einen Orchestrierungs-Workflow und fügen Sie einen Cloud Scheduler-Job als Trigger hinzu.
Workflows verwendet Dienstkonten, um Workflows Zugriff aufGoogle Cloud -Ressourcen zu gewähren. Erstellen Sie ein Dienstkonto und weisen Sie ihm die folgenden Berechtigungen zu:
- Dataform-Bearbeiter (
roles/dataform.editor) - Rolle „Dienstkontonutzer“ (
roles/iam.serviceAccountUser) für das in Dataform verwendete benutzerdefinierte Dienstkonto. - Die Mindestberechtigungen, die zum Verwalten Ihres Orchestrierungs-Workflows erforderlich sind. Weitere Informationen finden Sie unter Workflowberechtigung für den Zugriff auf Google Cloud -Ressourcen gewähren.
- Dataform-Bearbeiter (
Erstellen Sie einen Orchestrierungs-Workflow und verwenden Sie den folgenden YAML-Quellcode als Workflow-Definition:
main: steps: - init: assign: - repository: projects/PROJECT_ID/locations/REPOSITORY_LOCATION/repositories/REPOSITORY_ID - createCompilationResult: call: http.post args: url: ${"https://dataform.googleapis.com/v1/" + repository + "/compilationResults"} auth: type: OAuth2 body: gitCommitish: GIT_COMMITISH result: compilationResult - createWorkflowInvocation: call: http.post args: url: ${"https://dataform.googleapis.com/v1/" + repository + "/workflowInvocations"} auth: type: OAuth2 body: compilationResult: ${compilationResult.body.name} result: workflowInvocation - complete: return: ${workflowInvocation.body.name}Ersetzen Sie Folgendes:
- PROJECT_ID: die ID Ihres Projekts in Google Cloud .
- REPOSITORY_LOCATION: der Standort Ihres Dataform-Repositorys.
- REPOSITORY_ID: der Name Ihres Dataform-Repositorys.
- GIT_COMMITISH: Der Git-Commitish, z. B. ein Zweig, ein Tag oder ein Commit-SHA, von dem aus Sie Dataform-Code ausführen möchten. Ersetzen Sie diesen Wert bei einem neu erstellten Repository durch
main.
Planen Sie den Orchestrierungs-Workflow mit Cloud Scheduler.
Anfrage zum Erstellen eines Kompilierungsergebnisses für den Dataform-Workflow anpassen
Sie können den vorhandenen Orchestrierungs-Workflow aktualisieren und die Einstellungen für die Anfrage zum Erstellen des Kompilierungsergebnisses des Dataform-Workflows im YAML-Format definieren. Weitere Informationen zu den Einstellungen finden Sie in der Referenz zur REST-Ressource projects.locations.repositories.compilationResults.
Wenn Sie beispielsweise allen Aktionen während der Kompilierung die Einstellung _dev schemaSuffix hinzufügen möchten, ersetzen Sie den Text des Schritts createCompilationResult durch das folgende Code-Snippet:
- createCompilationResult:
call: http.post
args:
url: ${"https://dataform.googleapis.com/v1/" + repository + "/compilationResults"}
auth:
type: OAuth2
body:
gitCommitish: GIT_COMMITISH
codeCompilationConfig:
schemaSuffix: dev
Sie können auch zusätzliche Einstellungen als Laufzeitargumente in einer Workflows-Ausführungsanfrage übergeben und über Variablen auf diese Argumente zugreifen. Weitere Informationen finden Sie unter Laufzeitargumente in einer Ausführungsanfrage übergeben.
Dataform-Workflowaufrufanfrage anpassen
Sie können den vorhandenen Orchestrierungs-Workflow aktualisieren und die Einstellungen für die Aufrufanfrage des Dataform-Workflows im YAML-Format definieren. Weitere Informationen zu den Einstellungen für Aufrufanfragen finden Sie in der REST-Ressourcenreferenz zu projects.locations.repositories.workflowInvocations.
Wenn Sie beispielsweise nur Aktionen mit dem Tag hourly und allen transitiven Abhängigkeiten ausführen möchten, ersetzen Sie den Text createWorkflowInvocation durch das folgende Code-Snippet:
- createWorkflowInvocation:
call: http.post
args:
url: ${"https://dataform.googleapis.com/v1/" + repository + "/workflowInvocations"}
auth:
type: OAuth2
body:
compilationResult: ${compilationResult.body.name}
invocationConfig:
includedTags:
- hourly
transitiveDependenciesIncluded: true
Sie können auch zusätzliche Einstellungen als Laufzeitargumente in einer Workflows-Ausführungsanfrage übergeben und über Variablen auf diese Argumente zugreifen. Weitere Informationen finden Sie unter Laufzeitargumente in einer Ausführungsanfrage übergeben.
Ausführungen mit Managed Airflow planen
Sie können Managed Airflow 2 verwenden, um Dataform-Ausführungen zu planen. Dataform unterstützt Managed Airflow 1 nicht.
Wenn Sie Zeitpläne für Dataform-Ausführungen mit Managed Airflow 2 verwalten möchten, können Sie Dataform-Operatoren in gerichteten azyklischen Graphen (Directed Acyclic Graphs, DAGs) von Airflow verwenden. Sie können einen Airflow-DAG erstellen, der Dataform-Workflowaufrufe plant.
Dataform bietet verschiedene Airflow-Operatoren. Dazu gehören Operatoren zum Abrufen eines Kompilierungsergebnisses, zum Abrufen eines Workflowaufrufs und zum Abbrechen eines Workflowaufrufs. Eine vollständige Liste der verfügbaren Dataform-Airflow-Operatoren finden Sie unter Google Dataform-Operatoren.
Installieren Sie das PyPI-Paket google-cloud-dataform.
Wenn Sie Managed Airflow 2-Versionen ab 2.0.25 verwenden, ist dieses Paket in Ihrer Umgebung vorinstalliert. Sie müssen es nicht installieren.
Wenn Sie frühere Versionen von Managed Airflow 2 verwenden, installieren Sie das PyPI-Paket google-cloud-dataform.
Geben Sie im Abschnitt „PyPI-Pakete“ die Version ==0.2.0 an.
Airflow-DAG erstellen, der Dataform-Workflowaufrufe plant
Wenn Sie geplante Ausführungen von Dataform-Workflows mit Managed Airflow 2 verwalten möchten, schreiben Sie den DAG mit Dataform-Airflow-Operatoren und laden ihn dann in den Bucket Ihrer Umgebung hoch.
Das folgende Codebeispiel zeigt einen Airflow-DAG, der ein Dataform-Kompilierungsergebnis erstellt und einen Dataform-Workflowaufruf startet:
from datetime import datetime
from airflow import models
from airflow.models.baseoperator import chain
from airflow.providers.google.cloud.operators.dataform import (
DataformCreateCompilationResultOperator,
DataformCreateWorkflowInvocationOperator,
)
DAG_ID = "dataform"
PROJECT_ID = "PROJECT_ID"
REPOSITORY_ID = "REPOSITORY_ID"
REGION = "REGION"
GIT_COMMITISH = "GIT_COMMITISH"
with models.DAG(
DAG_ID,
schedule_interval='@once', # Override to match your needs
start_date=datetime(2022, 1, 1),
catchup=False, # Override to match your needs
tags=['dataform'],
) as dag:
create_compilation_result = DataformCreateCompilationResultOperator(
task_id="create_compilation_result",
project_id=PROJECT_ID,
region=REGION,
repository_id=REPOSITORY_ID,
compilation_result={
"git_commitish": GIT_COMMITISH,
},
)
create_workflow_invocation = DataformCreateWorkflowInvocationOperator(
task_id='create_workflow_invocation',
project_id=PROJECT_ID,
region=REGION,
repository_id=REPOSITORY_ID,
workflow_invocation={
"compilation_result": "{{ task_instance.xcom_pull('create_compilation_result')['name'] }}"
},
)
create_compilation_result >> create_workflow_invocation
Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Dataform-Projekt-ID in Google Cloud .
- REPOSITORY_ID: der Name Ihres Dataform-Repositorys.
- REGION: die Region, in der sich das Dataform-Repository befindet.
- COMPILATION_RESULT: der Name des Kompilierungsergebnisses, das Sie für diesen Workflowaufruf verwenden möchten.
- GIT_COMMITISH: der Git-Commitish, z. B. ein Branch, ein Tag oder ein Commit-SHA, der Version Ihres Codes im Remote-Git-Repository, die Sie kompilieren möchten.
Das folgende Codebeispiel zeigt einen Airflow-DAG, der Folgendes ausführt:
- Erstellt ein Dataform-Kompilierungsergebnis.
- Startet einen asynchronen Dataform-Workflowaufruf.
- Fragt den Status Ihres Workflows mit
DataformWorkflowInvocationStateSensorab, bis er den erwarteten Status erreicht.
from datetime import datetime
from google.cloud.dataform_v1 import WorkflowInvocation
from airflow import models
from airflow.models.baseoperator import chain
from airflow.providers.google.cloud.operators.dataform import (
DataformCreateCompilationResultOperator,
DataformCreateWorkflowInvocationOperator,
)
from airflow.providers.google.cloud.sensors.dataform import DataformWorkflowInvocationStateSensor
DAG_ID = "dataform"
PROJECT_ID = "PROJECT_ID"
REPOSITORY_ID = "REPOSITORY_ID"
REGION = "REGION"
GIT_COMMITISH = "GIT_COMMITISH"
with models.DAG(
DAG_ID,
schedule_interval='@once', # Override to match your needs
start_date=datetime(2022, 1, 1),
catchup=False, # Override to match your needs
tags=['dataform'],
) as dag:
create_compilation_result = DataformCreateCompilationResultOperator(
task_id="create_compilation_result",
project_id=PROJECT_ID,
region=REGION,
repository_id=REPOSITORY_ID,
compilation_result={
"git_commitish": GIT_COMMITISH,
},
)
create_workflow_invocation = DataformCreateWorkflowInvocationOperator(
task_id='create_workflow_invocation',
project_id=PROJECT_ID,
region=REGION,
repository_id=REPOSITORY_ID,
asynchronous=True,
workflow_invocation={
"compilation_result": COMPILATION_RESULT
}
)
is_workflow_invocation_done = DataformWorkflowInvocationStateSensor(
task_id="is_workflow_invocation_done",
project_id=PROJECT_ID,
region=REGION,
repository_id=REPOSITORY_ID,
workflow_invocation_id=("{{ task_instance.xcom_pull('create_workflow_invocation')['name'].split('/')[-1] }}"),
expected_statuses={WorkflowInvocation.State.SUCCEEDED},
)
create_compilation_result >> create_workflow_invocation
Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Dataform-Projekt-ID in Google Cloud .
- REPOSITORY_ID: der Name Ihres Dataform-Repositorys.
- REGION: die Region, in der sich das Dataform-Repository befindet.
- COMPILATION_RESULT: der Name des Kompilierungsergebnisses, das Sie für diesen Workflowaufruf verwenden möchten.
- GIT_COMMITISH: der Git-Commitish, z. B. ein Branch, ein Tag oder ein Commit-SHA, der Version Ihres Codes im Remote-Git-Repository, die Sie kompilieren möchten.
Konfigurationsparameter für die Kompilierung hinzufügen
Sie können dem Airflow-DAG-Objekt create_compilation_result zusätzliche Konfigurationsparameter für die Kompilierung hinzufügen. Weitere Informationen zu den verfügbaren Parametern finden Sie in der Dataform API-Referenz zu CodeCompilationConfig.
Wenn Sie dem Airflow-DAG-Objekt
create_compilation_resultKompilierungskonfigurationsparameter hinzufügen möchten, fügen Sie die ausgewählten Parameter im folgenden Format in das Feldcode_compilation_configein:create_compilation_result = DataformCreateCompilationResultOperator( task_id="create_compilation_result", project_id=PROJECT_ID, region=REGION, repository_id=REPOSITORY_ID, compilation_result={ "git_commitish": GIT_COMMITISH, "code_compilation_config": { "PARAMETER": "PARAMETER_VALUE"} }, )Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Dataform-Projekt-ID in Google Cloud .
- REPOSITORY_ID: der Name Ihres Dataform-Repositorys.
- REGION: die Region, in der sich das Dataform-Repository befindet.
- GIT_COMMITISH: der Git-Commitish, z. B. ein Branch, ein Tag oder ein Commit-SHA, der Version Ihres Codes im Remote-Git-Repository, die Sie kompilieren möchten.
- PARAMETER: der ausgewählte
CodeCompilationConfig-Parameter. Sie können mehrere Parameter hinzufügen. - PARAMETER_VALUE: der Wert des ausgewählten Parameters.
Das folgende Codebeispiel zeigt den Parameter defaultDatabase, der dem Airflow-DAG-Objekt create_compilation_result hinzugefügt wurde:
create_compilation_result = DataformCreateCompilationResultOperator(
task_id="create_compilation_result",
project_id=PROJECT_ID,
region=REGION,
repository_id=REPOSITORY_ID,
compilation_result={
"git_commitish": REMOTE_BRANCH,
"code_compilation_config": { "default_database": "my-custom-gcp-project"}
},
)
Konfigurationsparameter für den Workflowaufruf hinzufügen
Sie können dem Airflow-DAG-Objekt create_workflow_invocation zusätzliche Konfigurationsparameter für den Workflowaufruf hinzufügen. Weitere Informationen zu den verfügbaren Parametern finden Sie in der Dataform API-Referenz zu InvocationConfig.
Wenn Sie dem Airflow-DAG-Objekt
create_workflow_invocationKonfigurationsparameter für den Workflowaufruf hinzufügen möchten, fügen Sie die ausgewählten Parameter im folgenden Format in das Feldinvocation_configein:create_workflow_invocation = DataformCreateWorkflowInvocationOperator( task_id='create_workflow_invocation', project_id=PROJECT_ID, region=REGION, repository_id=REPOSITORY_ID, workflow_invocation={ "compilation_result": "{{ task_instance.xcom_pull('create_compilation_result')['name'] }}", "invocation_config": { "PARAMETER": PARAMETER_VALUE } }, )Ersetzen Sie Folgendes:
- PROJECT_ID: Ihre Dataform-Projekt-ID in Google Cloud .
- REPOSITORY_ID: der Name Ihres Dataform-Repositorys.
- REGION: die Region, in der sich das Dataform-Repository befindet.
- PARAMETER: der ausgewählte
InvocationConfig-Parameter. Sie können mehrere Parameter hinzufügen. - PARAMETER_VALUE: der Wert des ausgewählten Parameters.
Das folgende Codebeispiel zeigt die Parameter includedTags[] und transitiveDependenciesIncluded, die dem Airflow-DAG-Objekt create_workflow_invocation hinzugefügt wurden:
create_workflow_invocation = DataformCreateWorkflowInvocationOperator(
task_id='create_workflow_invocation',
project_id=PROJECT_ID,
region=REGION,
repository_id=REPOSITORY_ID,
workflow_invocation={
"compilation_result": "{{ task_instance.xcom_pull('create_compilation_result')['name'] }}",
"invocation_config": { "included_tags": ["daily"], "transitive_dependencies_included": true }
},
)
Ausführungen mit Cloud Build-Triggern automatisieren
Wenn Sie über die zeitbasierten Zeitpläne in einer Releasekonfiguration hinausgehen möchten, können Sie einen Cloud Build-Trigger verwenden, um eine ereignisgesteuerte Pipeline zu erstellen. Bei diesem Ansatz wird Ihr Code automatisch kompiliert, wenn ein neuer Commit an einen Git-Zweig übertragen wird. Außerdem wird sofort ein Dataform-Workflowaufruf ausgelöst, um Ihre Daten zu aktualisieren.
Ressourcen vorbereiten
Aktivieren Sie in Ihrem Google Cloud -Projekt die Dataform API und die Cloud Build API:
Die müssen Folgendes haben:
Ein benutzerdefiniertes Dienstkonto, das für die Kompilierung verwendet werden soll. Notieren Sie sich die E-Mail-Adresse des Dienstkontos, z. B.
dataform-compiler@PROJECT_NUMBER.iam..Ein Dataform-Repository, das mit einem Git-Anbieter verbunden ist.
Eine Release-Konfiguration in Ihrem Dataform-Repository. Notieren Sie sich die ID der Releasekonfiguration.
Eine Workflow-Konfiguration in Ihrem Dataform-Repository, die Ihre Release-Konfiguration verwendet. Notieren Sie sich die Workflowkonfigurations-ID.
Erforderliche IAM-Berechtigungen gewähren
Weisen Sie dem benutzerdefinierten Dienstkonto in Ihrem Dataform-Repository die Rolle „Dataform-Administrator“ (roles/dataform.admin) zu.
Diese Rolle bietet vollständigen Zugriff auf das Repository, einschließlich der Berechtigung, Kompilierungsergebnisse zu erstellen, Releasekonfigurationen zu aktualisieren und neue Workflowaufrufe zu starten. Informationen zum Zuweisen einer IAM-Rolle zu einem einzelnen Repository finden Sie unter Zugriff auf ein einzelnes Repository steuern.
Weisen Sie dem Dienstkonto des Cloud Build-Triggers die Rolle „Dienstkontonutzer“ (roles/iam.serviceAccountUser) für das benutzerdefinierte Dienstkonto der Workflowkonfiguration zu. Weitere Informationen zu dieser Anforderung finden Sie unter Strikten „act-as“-Modus verwenden.
Damit Cloud Build Ihr benutzerdefiniertes Dienstkonto verwenden kann, müssen Sie dem Cloud Build-Dienst-Agent die Berechtigung erteilen, als dieses Konto zu agieren. So gewähren Sie dem Cloud Build-Dienst-Agent die Berechtigung zur Identitätsübernahme:
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf.
Wählen Sie Ihr benutzerdefiniertes Dienstkonto aus.
Rufen Sie den Tab Hauptkonten mit Zugriff auf.
Klicken Sie auf Zugriff gewähren.
Geben Sie im Feld Neue Hauptkonten die E-Mail-Adresse des Cloud Build-Dienst-Agents ein. Sie sollte folgendes Format haben:
service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.Ersetzen Sie
PROJECT_NUMBERdurch die numerische ID Ihres Projekts vonGoogle Cloud . Sie finden Ihre Google Cloud -Projekt-ID imGoogle Cloud Console-Dashboard. Weitere Informationen finden Sie unter Projektnamen, ‑nummer und ‑ID finden.Wählen Sie im Menü Rolle auswählen die Option Dienstkontonutzer aus.
Klicken Sie auf Speichern.
Konfigurationsdatei cloudbuild.yaml erstellen
Erstellen Sie im Stammverzeichnis Ihres Git-Repositorys eine cloudbuild.yaml-Datei. Verwenden Sie diese Datei, um das folgende mehrstufige Skript zu definieren, mit dem ein Kompilierungsergebnis erstellt, die Releasekonfiguration aktualisiert wird, um dieses Kompilierungsergebnis als live festzulegen, und ein neuer Workflowaufruf gestartet wird.
steps:
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:latest'
entrypoint: 'bash'
args:
- '-c'
- |
set -e -o pipefail # Exit script on any error
# 1. Get the access token
TOKEN=$(gcloud auth print-access-token)
# 2. Define API endpoints and resource names
RELEASE_CONFIG_RESOURCE="projects/${_PROJECT_ID}/locations/${_DATAFORM_LOCATION}/repositories/${_DATAFORM_REPO_ID}/releaseConfigs/${_RELEASE_CONFIG_ID}"
COMPILATION_RESULTS_API="https://dataform.googleapis.com/v1/projects/${_PROJECT_ID}/locations/${_DATAFORM_LOCATION}/repositories/${_DATAFORM_REPO_ID}/compilationResults"
# 3. Create the new compilation result
echo "Creating new compilation result from $$RELEASE_CONFIG_RESOURCE..."
CREATE_PAYLOAD="{\"releaseConfig\": \"$$RELEASE_CONFIG_RESOURCE\"}"
curl --fail-with-body -X POST \
-H "Authorization: Bearer $$TOKEN" \
-H "Content-Type: application/json" \
-d "$$CREATE_PAYLOAD" \
"$$COMPILATION_RESULTS_API" | tee /workspace/compilation_response.json
- name: 'alpine'
entrypoint: 'bash'
args:
- '-c'
- |
set -e # Exit script on any error
# 4. Parse compilation result name
apk add --no-cache jq
COMPILATION_NAME=$(jq -r '.name' < /workspace/compilation_response.json)
echo "Successfully created compilation result: $$COMPILATION_NAME"
echo $$COMPILATION_NAME > /workspace/compilation_result_name.txt
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:latest'
entrypoint: 'bash'
args:
- '-c'
- |
set -e # Exit script on any error
# 5. Update the releaseConfig to set the new compilation result as 'live'
COMPILATION_NAME=$(cat /workspace/compilation_result_name.txt)
echo "Updating release config to set $$COMPILATION_NAME as live..."
PATCH_PAYLOAD="{\"releaseCompilationResult\": \"$$COMPILATION_NAME\", \"gitCommitish\": \"$BRANCH_NAME\"}"
RELEASE_CONFIG_RESOURCE="projects/${_PROJECT_ID}/locations/${_DATAFORM_LOCATION}/repositories/${_DATAFORM_REPO_ID}/releaseConfigs/${_RELEASE_CONFIG_ID}"
RELEASE_CONFIG_PATCH_API="https://dataform.googleapis.com/v1/$${RELEASE_CONFIG_RESOURCE}"
curl --fail-with-body -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "$$PATCH_PAYLOAD" \
"$$RELEASE_CONFIG_PATCH_API?updateMask=releaseCompilationResult"
echo "Successfully updated release config."
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:latest'
entrypoint: 'bash'
args:
- '-c'
- |
set -e # Exit script on any error
# 6. Launch a workflow config after recompiling the release config
WORKFLOW_CONFIG_RESOURCE="projects/${_PROJECT_ID}/locations/${_DATAFORM_LOCATION}/repositories/${_DATAFORM_REPO_ID}/workflowConfigs/${_WORKFLOW_CONFIG_ID}"
CREATE_WORKFLOW_PAYLOAD="{\"workflowConfig\": \"$$WORKFLOW_CONFIG_RESOURCE\"}"
WORKFLOW_INVOCATIONS_API="https://dataform.googleapis.com/v1/projects/${_PROJECT_ID}/locations/${_DATAFORM_LOCATION}/repositories/${_DATAFORM_REPO_ID}/workflowInvocations"
curl --fail-with-body -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d "$$CREATE_WORKFLOW_PAYLOAD" \
"$$WORKFLOW_INVOCATIONS_API"
echo "Successfully created a new workflow invocation."
# Define substitution variables that can be set in the trigger
substitutions:
_DATAFORM_LOCATION: 'us-central1' # Default, change if needed
_DATAFORM_REPO_ID: '' # Required: Set this in the trigger
_RELEASE_CONFIG_ID: '' # Required: Set this in the trigger
_WORKFLOW_CONFIG_ID: '' # Required: Set this in the trigger
_PROJECT_ID: ${PROJECT_ID} # Automatically uses the build's Project ID
options:
logging: CLOUD_LOGGING_ONLY
Cloud Build-Trigger erstellen
So erstellen Sie einen Trigger, der Ihre Build-Konfiguration ausführt, wenn Code in Ihr Repository übertragen wird:
Öffnen Sie in der Google Cloud Console die Cloud Build-Seite Trigger.
Wenn Sie Ihr Git-Repository noch nicht verbunden haben, klicken Sie auf Repository verbinden und folgen Sie der Anleitung.
Klicken Sie auf Trigger erstellen.
Geben Sie einen Namen für den Trigger ein.
Wählen Sie eine Region für den Trigger aus.
Wählen Sie ein Ereignis für den Trigger aus.
Legen Sie im Abschnitt Quelle das Repository auf Ihr verbundenes Git-Repository fest.
Legen Sie den Zweig auf den Hauptzweig Ihres Repositorys fest.
Wählen Sie im Abschnitt Konfiguration die Cloud Build-Konfigurationsdatei aus. Dies kann eine YAML- oder JSON-Datei sein.
Legen Sie den Dateispeicherort auf
/cloudbuild.yamloder den Pfad zu Ihrer Datei fest.Fügen Sie im Abschnitt Substitutionsvariablen die folgenden Variablen und Werte hinzu:
_DATAFORM_REPO_ID: Ihre Dataform-Repository-ID_RELEASE_CONFIG_ID: Ihre Dataform-Release-Konfigurations-ID_WORKFLOW_CONFIG_ID: die ID Ihrer Dataform-Workflowkonfiguration- Optional:
_DATAFORM_LOCATION: Die Region Ihres Dataform-Repositorys, z. B.us-central1
Wählen Sie im Abschnitt Dienstkonto Ihr benutzerdefiniertes Dienstkonto aus.
Klicken Sie auf Erstellen.
Weitere Informationen finden Sie unter Build-Trigger erstellen.
Trigger testen
- Führen Sie einen Commit für die Datei
cloudbuild.yamlaus und übertragen Sie sie per Push in den Branch, der von Ihrem Trigger überwacht wird. Öffnen Sie die Seite Build-Verlauf in der Google Cloud Console, um den Cloud Build-Build aufzurufen.
Wenn der Build erfolgreich ist, rufen Sie die Seite Dataform auf.
Wählen Sie Ihr Repository aus.
Klicken Sie auf Releases und Planung und wählen Sie Ihre Releasekonfiguration aus.
Suchen Sie in der Liste Ergebnisse der manuellen bzw. API-Kompilierung nach einem neuen Eintrag. Die letzte erfolgreiche Kompilierung sollte als Live-Kompilierungsergebnis für die Release-Konfiguration markiert sein.
Klicken Sie auf Workflow-Ausführungslogs.
Sie sollten einen neuen Workflowaufruf sehen, der mit der ausgewählten Workflowkonfiguration gestartet wurde.
Nächste Schritte
- Informationen zum Konfigurieren von Dataform-Kompilierungs-Release-Konfigurationen finden Sie unter Release-Konfiguration erstellen.
- Weitere Informationen zum Codelebenszyklus in Dataform finden Sie unter Einführung in den Codelebenszyklus in Dataform.
- Weitere Informationen zur Dataform API finden Sie unter Dataform API.
- Weitere Informationen zu Managed Airflow-Umgebungen finden Sie unter Managed Airflow – Übersicht.
- Weitere Informationen zu den Preisen für Workflows finden Sie unter Preise für Workflows.