Utiliser Dataflow SQL

Cette page explique comment utiliser Dataflow SQL et créer des tâches Dataflow SQL.

Pour créer une tâche Dataflow SQL, vous devez écrire et exécuter une requête Dataflow SQL.

Utiliser l'éditeur Dataflow SQL

L'éditeur Dataflow SQL est une page de Google Cloud Console sur laquelle vous écrivez et exécutez des requêtes pour créer des tâches Dataflow SQL.

Pour accéder à l'éditeur Dataflow SQL, procédez comme suit :

Vous pouvez également accéder à l'éditeur Dataflow SQL à partir de l'interface de surveillance Dataflow en procédant comme suit :

  1. Dans la console Google Cloud, accédez à la page Tâches de Dataflow.

    Accéder aux tâches

  2. Dans le menu Dataflow, cliquez sur Espace de travail SQL.

Écrire des requêtes Dataflow SQL

Les requêtes Dataflow SQL utilisent la syntaxe de requête Dataflow SQL. La syntaxe de la requête Dataflow SQL est semblable au langage SQL standard de BigQuery.

Vous pouvez utiliser les extensions de flux Dataflow SQL pour regrouper les données provenant de sources Dataflow continuellement mises à jour telles que Pub/Sub.

Par exemple, la requête suivante compte le nombre de passagers par minute dans un flux Pub/Sub de courses en taxi :

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)

Exécuter des requêtes Dataflow SQL

Lorsque vous exécutez une requête Dataflow SQL, Dataflow transforme la requête en un pipeline Apache Beam et exécute le pipeline.

Vous pouvez exécuter une requête SQL Dataflow à l'aide de la console Google Cloud ou de Google Cloud CLI.

Console

Pour exécuter une requête Dataflow SQL, utilisez l'éditeur Dataflow SQL.

  1. Accédez à la page Éditeur Dataflow SQL.

    Accéder à l'éditeur Dataflow SQL

  2. Saisissez la requête Dataflow SQL dans l'éditeur de requête.

  3. Cliquez sur Créer une tâche pour ouvrir un panneau d'options de tâche.

  4. (Facultatif) Dans le champ Nom de la tâche, saisissez un nom de tâche unique.

  5. Pour Point de terminaison régional, sélectionnez une valeur dans le menu.

  6. Facultatif : Cliquez sur Afficher les paramètres facultatifs, puis saisissez des valeurs pour les options de pipeline Dataflow fournies.

  7. Pour Destination, sélectionnez un type de sortie, puis saisissez des valeurs pour les champs fournis.

  8. Facultatif : Dans la section Paramètres de requête SQL, ajoutez des paramètres, puis saisissez des valeurs dans les champs fournis.

  9. Cliquez sur Create (Créer).

gcloud

Pour exécuter une requête Dataflow, SQL utilisez la commande gcloud dataflow sql query. Voici un exemple de requête SQL qui crée

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

Remplacez les éléments suivants :

  • JOB_NAME : nom de la tâche Dataflow SQL
  • REGION : emplacement Dataflow pour le déploiement de votre job Dataflow
  • BIGQUERY_TABLE : nom de la table BigQuery dans laquelle vous souhaitez écrire la sortie
  • BIGQUERY_DATASET : ID de l'ensemble de données BigQuery contenant la table de sortie
  • BIGQUERY_PROJECT : ID du projet Google Cloud contenant la table de sortie BigQuery
  • SQL_QUERY : requête Dataflow SQL

Définir les options de pipeline

Vous pouvez définir les options de pipeline Dataflow pour les tâches Dataflow SQL. Les options de pipeline Dataflow sont des paramètres d'exécution qui permettent de configurer l'emplacement et les options d'exécution des requêtes Dataflow SQL.

Pour définir les options de pipeline Dataflow pour les tâches Dataflow SQL, spécifiez les paramètres suivants lorsque vous exécutez une requête Dataflow SQL.

Console

Réglage Type Description Valeur par défaut
Point de terminaison régional String Région dans laquelle exécuter la requête. Les requêtes Dataflow SQL peuvent être exécutées dans des régions disposant d'un emplacement Dataflow. Si ce champ n'est pas défini, la valeur par défaut est us-central1..
Nombre maximal de nœuds de calcul int Nombre maximal d'instances Compute Engine disponibles pour le pipeline pendant l'exécution. Si ce champ n'est pas défini, Dataflow définit automatiquement un nombre approprié de nœuds de calcul.
Région des nœuds de calcul String La région Compute Engine pour le lancement d'instances de nœuds de calcul visant à exécuter le pipeline. La région du nœud de calcul Compute Engine peut être différente de celle du job Dataflow. Si ce champ n'est pas spécifié, la valeur par défaut est définie sur la région Dataflow spécifiée.
Zone de nœuds de calcul String Zone Compute Engine pour le lancement d'instances de nœuds de calcul visant à exécuter le pipeline. La zone Compute Engine peut se trouver dans une région différente de celle du job Dataflow.

Si ce champ n'est pas défini, la valeur par défaut est définie sur une zone dans la région du nœud de calcul.

Si la région du nœud de calcul n'est pas définie, la valeur par défaut est définie sur une zone dans la région Dataflow spécifiée.

Adresse e-mail du compte de service String Adresse e-mail du compte de service de nœud de calcul avec lequel exécuter le pipeline. L'adresse e-mail doit respecter le format my-service-account-name@<project-id>.iam.gserviceaccount.com. Si ce champ n'est pas défini, les nœuds de calcul Dataflow utilisent le compte de service Compute Engine du projet actuel en tant que compte de service de nœud de calcul.
Type de machine String

Type de machine Compute Engine utilisé par Dataflow lors du démarrage des nœuds de calcul. Vous pouvez utiliser toutes les familles de types de machines Compute Engine disponibles, ainsi que des types de machines personnalisés.

Pour des résultats optimaux, utilisez des types de machine n1. Les types de machines à cœur partagé, tels que les nœuds de calcul des séries f1 et g1, ne sont pas disponibles avec le contrat de niveau de service de Dataflow.

Notez que l'utilisation de Dataflow est facturée en fonction du nombre de processeurs virtuels et de Go de mémoire consommés par les nœuds de calcul. La facturation ne dépend pas de la famille du type de machine.

Si ce champ n'est pas défini, Dataflow sélectionne automatiquement le type de machine.
Tests supplémentaires String Tests à activer. Un test peut être une valeur, telle que enable_streaming_engine, ou une paire clé/valeur, telle que shuffle_mode=service. Les tests doivent se présenter sous la forme d'une liste d'éléments séparés par une virgule. Si cette liste n'est pas spécifiée, aucun test n'est activé.
Configuration des adresses IP des nœuds de calcul String

Indique si les nœuds de calcul Dataflow utilisent des adresses IP publiques.

Si la valeur est définie sur Private, les nœuds de calcul Dataflow utilisent des adresses IP privées pour toutes les communications. L'accès privé à Google doit être activé sur le paramètre Network ou Subnetwork spécifié.

Si la valeur est définie sur Private et que l'option Subnetwork est spécifiée, l'option Network est ignorée.

Si ce champ n'est pas défini, la valeur par défaut est Public.
Réseau String Réseau Compute Engine auquel les nœuds de calcul sont attribués. Si ce champ n'est pas spécifié, la valeur par défaut est définie sur le réseau default.
Sous-réseau String Sous-réseau Compute Engine auquel les nœuds de calcul sont attribués. Le sous-réseau doit être au format regions/region/subnetworks/subnetwork. Si ce champ n'est pas défini, Dataflow détermine automatiquement le sous-réseau.

gcloud

Option Type Description Valeur par défaut
‑‑region String Région dans laquelle exécuter la requête. Les requêtes Dataflow SQL peuvent être exécutées dans des régions disposant d'un emplacement Dataflow. Si ce champ n'est pas défini, une erreur se produit.
‑‑max‑workers int Nombre maximal d'instances Compute Engine disponibles pour le pipeline pendant l'exécution. Si ce champ n'est pas défini, Dataflow détermine automatiquement un nombre approprié de nœuds de calcul.
‑‑num‑workers int Nombre initial d'instances Google Compute Engine à utiliser lors de l'exécution du pipeline. Ce paramètre détermine le nombre de nœuds de calcul démarrés par Dataflow au début de la tâche. Si ce champ n'est pas défini, Dataflow détermine automatiquement un nombre approprié de nœuds de calcul.
‑‑worker‑region String

Région Compute Engine permettant de lancer des instances de nœud de calcul pour exécuter votre pipeline. La région du nœud de calcul Compute Engine peut être différente de celle du job Dataflow.

Vous pouvez spécifier ‑‑worker‑region ou ‑‑worker‑zone.

Si ce champ n'est pas spécifié, la valeur par défaut est définie sur la région Dataflow spécifiée.
‑‑worker‑zone String

Zone Compute Engine pour le lancement d'instances de nœuds de calcul visant à exécuter le pipeline. La zone Compute Engine peut se trouver dans une région différente de celle du job Dataflow.

Vous pouvez spécifier ‑‑worker‑region ou ‑‑worker‑zone.

Si ce champ n'est pas spécifié, la valeur par défaut est définie sur une zone dans la région Dataflow spécifiée.
‑‑worker‑machine‑type String

Type de machine Compute Engine utilisé par Dataflow lors du démarrage des nœuds de calcul. Vous pouvez utiliser toutes les familles de types de machines Compute Engine disponibles, ainsi que des types de machines personnalisés.

Pour des résultats optimaux, utilisez des types de machine n1. Les types de machines à cœur partagé, tels que les nœuds de calcul des séries f1 et g1, ne sont pas disponibles avec le contrat de niveau de service de Dataflow.

Notez que l'utilisation de Dataflow est facturée en fonction du nombre de processeurs virtuels et de Go de mémoire consommés par les nœuds de calcul. La facturation ne dépend pas de la famille du type de machine.

Si ce champ n'est pas défini, Dataflow sélectionne automatiquement le type de machine.
‑‑service‑account‑email String Adresse e-mail du compte de service de nœud de calcul avec lequel exécuter le pipeline. L'adresse e-mail doit respecter le format my-service-account-name@<project-id>.iam.gserviceaccount.com. Si ce champ n'est pas défini, les nœuds de calcul Dataflow utilisent le compte de service Compute Engine du projet actuel en tant que compte de service de nœud de calcul.
‑‑disable‑public‑ips boolean

Indique si les nœuds de calcul Dataflow utilisent des adresses IP publiques.

S'ils sont définis, les nœuds de calcul Dataflow utilisent des adresses IP privées pour toutes les communications.

Si ce champ n'est pas défini, les nœuds de calcul Dataflow utilisent des adresses IP publiques.
‑‑network String Réseau Compute Engine auquel les nœuds de calcul sont attribués. Si ce champ n'est pas spécifié, la valeur par défaut est définie sur le réseau default.
‑‑subnetwork String Sous-réseau Compute Engine auquel les nœuds de calcul sont attribués. Le sous-réseau doit être au format regions/region/subnetworks/subnetwork. Si ce champ n'est pas défini, Dataflow détermine automatiquement le sous-réseau.
‑‑dataflow‑kms‑key String La clé de chiffrement gérée par le client (CMEK, Customer-Managed Encryption Key) qui permet de chiffrer les données au repos. Vous pouvez contrôler la clé de chiffrement via Cloud KMS. La clé doit se trouver au même emplacement que la tâche. Dans le cas contraire, Dataflow utilise le chiffrement Google Cloud par défaut à la place du chiffrement CMEK.

Pour en savoir plus, consultez la documentation de référence sur la commande gcloud dataflow sql query.

Arrêter des tâches Dataflow SQL

Pour arrêter une tâche Dataflow SQL, vous devez l'annuler. L'arrêt d'une tâche Dataflow SQL avec l'option drain n'est pas accepté.

Tarifs

Dataflow SQL suit la tarification standard de Dataflow : il n'y a pas de grille tarifaire spécifique. Vous êtes facturé pour les ressources consommées par les tâches Dataflow que vous créez en fonction de vos instructions SQL. Les frais pour ces ressources sont les frais standards de Dataflow pour le processeur virtuel, la mémoire, le disque persistant, Streaming Engine et Dataflow Shuffle.

Une tâche Dataflow SQL peut consommer des ressources supplémentaires telles que Pub/Sub et BigQuery, chacune étant facturée à son propre tarif.

Pour en savoir plus sur la tarification de Dataflow, consultez la page Tarifs de Dataflow.

Étapes suivantes