Dataflow SQL verwenden

Auf dieser Seite wird erläutert, wie Sie Dataflow SQL verwenden und Dataflow SQL-Jobs erstellen.

Zum Erstellen eines Dataflow SQL-Jobs müssen Sie eine Dataflow SQL-Abfrage schreiben und ausführen.

Dataflow SQL-Editor verwenden

Der Dataflow SQL-Editor ist eine Seite in der Google Cloud Console, auf der Sie Abfragen zum Erstellen von Dataflow SQL-Jobs schreiben und ausführen.

So greifen Sie auf den Dataflow SQL-Editor zu:

Sie können auf den Dataflow SQL-Editor auch über die Dataflow-Monitoring-Oberfläche zugreifen. Gehen Sie dazu so vor:

  1. Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.

    Zu Jobs

  2. Klicken Sie im Dataflow-Menü auf SQL-Arbeitsbereich.

Dataflow SQL-Abfragen schreiben

Dataflow SQL-Abfragen verwenden die Dataflow SQL-Abfragesyntax. Die Dataflow SQL-Abfragesyntax ähnelt der BigQuery-Standard-SQL.

Sie können die Dataflow SQL-Streamingerweiterungen verwenden, um Daten aus kontinuierlich aktualisierten Dataflow-Quellen wie Pub/Sub zu aggregieren.

Mit der folgenden Abfrage werden beispielsweise jede Minute die Fahrgäste in einem Pub/Sub-Stream von Taxifahrten gezählt:

SELECT
  DATETIME(tr.window_start) AS starttime,
  SUM(tr.passenger_count) AS pickup_count
FROM TUMBLE ((SELECT * FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime`),
DESCRIPTOR(event_timestamp), 'INTERVAL 1 MINUTE') AS tr
WHERE
  tr.ride_status = "pickup"
GROUP BY DATETIME(tr.window_start)

Dataflow SQL-Abfragen ausführen

Wenn Sie eine Dataflow SQL-Abfrage ausführen, wandelt Dataflow die Abfrage in eine Apache Beam-Pipeline um und führt die Pipeline aus.

Sie können eine Dataflow SQL-Abfrage mit der Google Cloud Console oder des Google Cloud CLI ausführen.

Console

Verwenden Sie zum Ausführen einer Dataflow SQL-Abfrage den Dataflow SQL-Editor.

  1. Wechseln Sie zur Seite Dataflow SQL-Editor.

    Zum Dataflow SQL-Editor

  2. Geben Sie die Dataflow SQL-Abfrage in den Abfrageeditor ein.

  3. Klicken Sie auf Job erstellen, um ein Feld mit Joboptionen zu öffnen.

  4. Optional: Geben Sie für Jobname einen eindeutigen Jobnamen ein.

  5. Wählen Sie für Regionaler Endpunkt einen Wert aus dem Menü aus.

  6. Optional: Klicken Sie auf Optionale Parameter anzeigen und geben Sie dann Werte für die angegebenen Dataflow-Pipelineoptionen ein.

  7. Wählen Sie als Ziel einen Ausgabetyp aus und geben Sie Werte für die bereitgestellten Felder ein.

  8. Optional: Fügen Sie im Bereich SQL-Abfrageparameter Parameter hinzu und geben Sie dann Werte in die verfügbaren Felder ein.

  9. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie zum Ausführen einer Dataflow SQL-Abfrage den Befehl gcloud dataflow sql query. Hier sehen Sie eine Beispiel-SQL-Abfrage, die Folgendes erstellt:

gcloud dataflow sql query \
  --job-name=JOB_NAME \
  --region=REGION \
  --bigquery-table=BIGQUERY_TABLE \
  --bigquery-dataset=BIGQUERY_DATASET \
  --bigquery-project=BIGQUERY_PROJECT \
'SQL_QUERY'

Dabei gilt:

  • JOB_NAME: ein Name für Ihren Dataflow SQL-Job.
  • REGION: der Dataflow-Speicherort für die Bereitstellung Ihres Dataflow-Jobs
  • BIGQUERY_TABLE: der Name der BigQuery-Tabelle, in die die Ausgabe geschrieben werden soll
  • BIGQUERY_DATASET: die BigQuery-Dataset-ID, die die Ausgabetabelle enthält
  • BIGQUERY_PROJECT: die Google Cloud-Projekt-ID, die die BigQuery-Ausgabetabelle enthält
  • SQL_QUERY: Ihre Dataflow SQL-Abfrage

Pipelineoptionen festlegen

Sie können Dataflow-Pipelineoptionen für Dataflow SQL-Jobs festlegen. Dataflow-Pipelineoptionen sind Ausführungsparameter, mit denen konfiguriert wird, wie und wo Dataflow SQL-Abfragen ausgeführt werden.

Zum Festlegen von Dataflow-Pipelineoptionen für Dataflow SQL-Jobs geben Sie beim Ausführen einer Dataflow SQL-Abfrage die folgenden Parameter an.

Console

Parameter Typ Beschreibung Standardwert
Regionaler Endpunkt String Die Region, in der die Abfrage ausgeführt wird. Dataflow SQL-Abfragen können in Regionen mit einem Dataflow-Speicherort ausgeführt werden. Hat standardmäßig den Wert us-central1., wenn nichts anderes festgelegt wird.
Maximale Anzahl der Worker int Die maximale Anzahl von Compute Engine-Instanzen, die während der Ausführung für Ihre Pipeline verfügbar sind. Wenn kein Wert angegeben ist, bestimmt der Dataflow-Dienst automatisch die richtige Anzahl der Worker.
Worker-Region String Die Compute Engine-Region, in der Worker-Instanzen zum Ausführen der Pipeline gestartet werden. Die Worker-Region von Compute Engine kann sich in einer anderen Region als die Dataflow-Jobregion befinden. Nimmt standardmäßig die angegebene Dataflow-Region, wenn nichts anderes festgelegt wird.
Worker-Zone String Die Compute Engine-Zone, in der Worker-Instanzen zum Ausführen der Pipeline gestartet werden. Die Compute Engine-Zone kann sich in einer anderen Region als die Dataflow-Jobregion befinden.

Wenn nichts anderes festgelegt ist, wird standardmäßig eine Zone in der Worker-Region verwendet.

Wenn die Worker-Region nicht festgelegt ist, wird standardmäßig eine Zone in der angegebenen Dataflow-Region verwendet.

E-Mail-Adresse des Dienstkontos String Die E-Mail-Adresse des Worker-Dienstkontos, mit dem die Pipeline ausgeführt werden soll. Die E-Mail-Adresse muss folgendes Format haben: my-service-account-name@<project-id>.iam.gserviceaccount.com. Wenn nichts anderes festgelegt ist, verwenden Dataflow-Worker das Compute Engine-Dienstkonto des aktuellen Projekts als Worker-Dienstkonto.
Maschinentyp String

Der Compute Engine-Maschinentyp, den Dataflow beim Starten von Workern verwendet. Sie können jede der verfügbaren Compute Engine-Maschinentypfamilien sowie benutzerdefinierte Maschinentypen verwenden.

Die besten Ergebnisse erzielen Sie mit n1-Maschinentypen. Maschinentypen mit gemeinsam genutztem Kern, beispielsweise Worker der Serien f1 und g1, werden im Rahmen des Service Level Agreements von Dataflow nicht unterstützt.

Beachten Sie, dass Dataflow nach der Anzahl der vCPUs und GB Arbeitsspeicher in Workern abrechnet. Die Abrechnung erfolgt unabhängig von der Maschinentypfamilie.

Wenn nichts anderes festgelegt ist, wählt Dataflow automatisch den Maschinentyp aus.
Zusätzliche Tests String Die zu aktivierenden Tests. Ein Test kann ein Wert wie enable_streaming_engine oder ein Schlüssel/Wert-Paar wie shuffle_mode=service sein. Die Tests müssen sich in einer durch Kommas getrennten Liste befinden. Wenn nichts angegeben ist, werden keine Tests aktiviert.
Konfiguration der Worker-IP-Adresse String

Gibt an, ob Dataflow-Worker öffentliche IP-Adressen verwenden.

Wenn der Wert auf Private gesetzt ist, verwenden Dataflow-Worker für die gesamte Kommunikation private IP-Adressen. Für das angegebene Network oder Subnetwork muss der private Google-Zugriff aktiviert sein.

Wenn der Wert auf Private gesetzt und die Option Subnetwork angegeben ist, wird die Option Network ignoriert.

Enthält standardmäßig den Wert Public, wenn nichts anderes festgelegt wird.
Netzwerk String Das Compute Engine-Netzwerk, dem Worker zugewiesen werden. Wenn nichts anderes festgelegt ist, wird standardmäßig das Netzwerk default verwendet.
Subnetzwerk String Das Compute Engine-Subnetzwerk, dem Worker zugewiesen werden. Das Subnetzwerk muss das Format regions/region/subnetworks/subnetwork haben. Wenn nichts anderes festgelegt ist, ermittelt Dataflow automatisch das Subnetzwerk.

gcloud

Flag Typ Beschreibung Standardwert
‑‑region String Die Region, in der die Abfrage ausgeführt wird. Dataflow SQL-Abfragen können in Regionen mit einem Dataflow-Speicherort ausgeführt werden. Wenn Sie diese Option nicht einrichten, wird ein Fehler ausgegeben.
‑‑max‑workers int Die maximale Anzahl von Compute Engine-Instanzen, die während der Ausführung für Ihre Pipeline verfügbar sind. Wenn kein Wert angegeben ist, bestimmt der Dataflow-Dienst automatisch die richtige Anzahl der Worker.
‑‑num‑workers int Die anfängliche Zahl der Compute Engine-Instanzen für die Ausführung Ihrer Pipeline. Dieser Parameter bestimmt, wie viele Worker Dataflow zu Beginn des Jobs startet. Wenn kein Wert angegeben ist, bestimmt der Dataflow-Dienst automatisch die richtige Anzahl der Worker.
‑‑worker‑region String

Die Compute Engine-Region, in der Worker-Instanzen zum Ausführen der Pipeline gestartet werden. Die Worker-Region von Compute Engine kann sich in einer anderen Region als die Dataflow-Jobregion befinden.

Sie können ‑‑worker‑region oder ‑‑worker‑zone angeben.

Nimmt standardmäßig die angegebene Dataflow-Region, wenn nichts anderes festgelegt wird.
‑‑worker‑zone String

Die Compute Engine-Zone, in der Worker-Instanzen zum Ausführen der Pipeline gestartet werden. Die Compute Engine-Zone kann sich in einer anderen Region als die Dataflow-Jobregion befinden.

Sie können ‑‑worker‑region oder ‑‑worker‑zone angeben.

Wenn nichts anderes festgelegt ist, wird standardmäßig eine Zone in der angegebenen Dataflow-Region verwendet.
‑‑worker‑machine‑type String

Der Compute Engine-Maschinentyp, den Dataflow beim Starten von Workern verwendet. Sie können jede der verfügbaren Compute Engine-Maschinentypfamilien sowie benutzerdefinierte Maschinentypen verwenden.

Die besten Ergebnisse erzielen Sie mit n1-Maschinentypen. Maschinentypen mit gemeinsam genutztem Kern, beispielsweise Worker der Serien f1 und g1, werden im Rahmen des Service Level Agreements von Dataflow nicht unterstützt.

Beachten Sie, dass Dataflow nach der Anzahl der vCPUs und GB Arbeitsspeicher in Workern abrechnet. Die Abrechnung erfolgt unabhängig von der Maschinentypfamilie.

Wenn nichts anderes festgelegt ist, wählt Dataflow automatisch den Maschinentyp aus.
‑‑service‑account‑email String Die E-Mail-Adresse des Worker-Dienstkontos, mit dem die Pipeline ausgeführt werden soll. Die E-Mail-Adresse muss folgendes Format haben: my-service-account-name@<project-id>.iam.gserviceaccount.com. Wenn nichts anderes festgelegt ist, verwenden Dataflow-Worker das Compute Engine-Dienstkonto des aktuellen Projekts als Worker-Dienstkonto.
‑‑disable‑public‑ips boolean

Gibt an, ob Dataflow-Worker öffentliche IP-Adressen verwenden.

Wenn festgelegt, verwenden die Dataflow-Worker für die gesamte Kommunikation private IP-Adressen.

Ist nichts festgelegt, verwenden Dataflow-Worker öffentliche IP-Adressen.
‑‑network String Das Compute Engine-Netzwerk, dem Worker zugewiesen werden. Wenn nichts anderes festgelegt ist, wird standardmäßig das Netzwerk default verwendet.
‑‑subnetwork String Das Compute Engine-Subnetzwerk, dem Worker zugewiesen werden. Das Subnetzwerk muss das Format regions/region/subnetworks/subnetwork haben. Wenn nichts anderes festgelegt ist, ermittelt Dataflow automatisch das Subnetzwerk.
‑‑dataflow‑kms‑key String Der vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Key, CMEK) zum Verschlüsseln inaktiver Daten. Sie können den Verschlüsselungsschlüssel über Cloud KMS verwalten. Der Schlüssel muss sich am selben Standort wie der Job befinden. Wenn kein Wert angegeben ist, verwendet Dataflow die standardmäßige Google Cloud-Verschlüsselung anstelle eines CMEK.

Weitere Informationen finden Sie in der gcloud dataflow sql query-Befehlsreferenz.

Dataflow SQL-Jobs beenden

Wenn Sie einen Dataflow SQL-Job anhalten möchten, müssen Sie ihn abbrechen. Das Beenden eines Dataflow SQL-Jobs mit der Option drain wird nicht unterstützt.

Preise

Für Dataflow SQL gelten die Dataflow-Standardpreise. Es gibt kein separates Preismodell. Ihnen werden die Ressourcen in Rechnung gestellt, die von den Dataflow-Jobs verbraucht werden, die Sie auf Basis Ihrer SQL-Anweisungen erstellen. Die Gebühren für diese Ressourcen entsprechen den Dataflow-Standardgebühren für vCPU, Arbeitsspeicher, Persistent Disk, Streaming Engine und Dataflow Shuffle.

Ein Dataflow SQL-Job kann zusätzliche Ressourcen wie Pub/Sub und BigQuery verbrauchen, die nach ihren jeweiligen Preisen in Rechnung gestellt werden.

Weitere Informationen finden Sie unter Dataflow-Preise.

Nächste Schritte