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-UI verwenden

Die Dataflow SQL-UI ist eine Einstellung der BigQuery-Web-UI zum Erstellen von Dataflow SQL-Jobs.

Sie können über die BigQuery-Web-UI auf die Dataflow SQL-UI zugreifen.

  1. BigQuery-Web-UI öffnen

    Zur BigQuery-Web-UI

  2. Wechseln Sie zur Cloud Dataflow-Engine.

    a. Klicken Sie auf das Drop-down-Menü Mehr und wählen Sie Abfrageeinstellungen aus.

    Das Drop-down-Menü "Mehr" in der BigQuery-Web-UI mit der ausgewählten Option "Abfrageeinstellungen"

    a. Wählen Sie im Menü Abfrageeinstellungen die Option Dataflow-Engine aus.

    a. Klicken Sie in der Eingabeaufforderung, die angezeigt wird, wenn die Dataflow API und die Data Catalog API nicht aktiviert sind, auf APIs aktivieren.

    Das Menü "Abfrageeinstellungen" mit der Eingabeaufforderung "APIs aktivieren"

    a. Klicken Sie auf Speichern.

    Das Menü "Abfrageeinstellungen" mit aktiviertem Optionsfeld "Dataflow-Engine" und aktivierten APIs

Sie können auch über die Dataflow-Monitoring-Oberfläche auf die Dataflow SQL-UI zugreifen.

  1. Rufen Sie die Dataflow-Monitoring-Oberfläche auf.

    Zur Dataflow-Monitoring-Oberfläche

  2. Klicken Sie auf Job aus SQL erstellen.

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
  TUMBLE_START('INTERVAL 1 MINUTE') as period_start,
  SUM(passenger_count) AS pickup_count
FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime`
WHERE
  ride_status = "pickup"
GROUP BY
  TUMBLE(event_timestamp, 'INTERVAL 1 MINUTE')

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 Cloud Console oder dem gcloud-Befehlszeilentool ausführen.

Console

Verwenden Sie zum Ausführen einer Dataflow SQL-Abfrage die Dataflow SQL-UI.

  1. Rufen Sie die Dataflow SQL-UI auf.

    Zur Dataflow SQL-UI

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

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

  4. (Optional) Klicken Sie auf Optionale Parameter anzeigen und legen Sie die Dataflow-Pipelineoptionen fest.

  5. Wählen Sie in diesem Bereich im Abschnitt Ziel einen Ausgabetyp aus.

  6. Klicken Sie auf Erstellen.

gcloud

Verwenden Sie zum Ausführen einer Dataflow SQL-Abfrage den Befehl gcloud dataflow sql query.

gcloud dataflow sql query \
  --job-name=job-name \
  --region=region \
  --bigquery-table=table-name \
  --bigquery-dataset=destination-dataset \
'query'

Weitere Informationen zum Abfragen von Daten und zum Schreiben von Dataflow SQL-Abfrageergebnissen finden Sie unter Datenquellen und -ziele verwenden.

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 regionalen Endpunkt von Dataflow 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 der regionale Dataflow-Endpunkt befinden. Wenn nichts anderes festgelegt ist, wird standardmäßig der angegebene regionale Dataflow-Endpunkt verwendet.
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 der regionale Dataflow-Endpunkt 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 im angegebenen regionalen Dataflow-Endpunkt verwendet.

E-Mail-Adresse des Dienstkontos String Die E-Mail-Adresse des Controller-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 Controller-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 regionalen Endpunkt von Dataflow 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 der regionale Dataflow-Endpunkt befinden.

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

Wenn nichts anderes festgelegt ist, wird standardmäßig der angegebene regionale Dataflow-Endpunkt verwendet.
‑‑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 der regionale Dataflow-Endpunkt befinden.

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

Wenn nichts anderes festgelegt ist, wird standardmäßig eine Zone im angegebenen regionalen Dataflow-Endpunkt 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 Controller-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 Controller-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

Verwenden Sie den Befehl "Abbrechen", um Dataflow SQL-Jobs zu beenden. Das Beenden eines Dataflow SQL-Jobs per 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 zu den Dataflow-Preisen finden Sie auf der Preisseite zu Dataflow.

Nächste Schritte