Usar Dataflow SQL

En esta página se explica cómo usar Dataflow SQL y crear tareas de Dataflow SQL.

Para crear una tarea de Dataflow SQL, debes escribir y ejecutar una consulta de Dataflow SQL.

Usar el editor de Dataflow SQL

El editor de Dataflow SQL es una página de la Google Cloud consola en la que puedes escribir y ejecutar consultas para crear tareas de Dataflow SQL.

Para acceder al editor de SQL de Dataflow, sigue estos pasos:

También puede acceder al editor de Dataflow SQL desde la interfaz de monitorización de Dataflow siguiendo estos pasos:

  1. En la Google Cloud consola, ve a la página Trabajos de Dataflow.

    Ir a Tareas

  2. En el menú Dataflow, haz clic en Espacio de trabajo de SQL.

Escribir consultas de Dataflow SQL

Las consultas de Dataflow SQL usan la sintaxis de consulta de Dataflow SQL. La sintaxis de las consultas de Dataflow SQL es similar a la de SQL estándar de BigQuery.

Puedes usar las extensiones de streaming de SQL de Dataflow para agregar datos de fuentes de Dataflow que se actualizan continuamente, como Pub/Sub.

Por ejemplo, la siguiente consulta cuenta los pasajeros de una transmisión de viajes en taxi de Pub/Sub cada minuto:

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)

Ejecutar consultas de Dataflow SQL

Cuando ejecutas una consulta de Dataflow SQL, Dataflow convierte la consulta en un flujo de procesamiento de Apache Beam y lo ejecuta.

Puedes ejecutar una consulta de Dataflow SQL mediante la Google Cloud consola o la CLI de Google Cloud.

Consola

Para ejecutar una consulta de Dataflow SQL, usa el editor de Dataflow SQL:

  1. Ve a la página Editor de Dataflow SQL.

    Ir al editor de Dataflow SQL

  2. Introduce la consulta de Dataflow SQL en el editor de consultas.

  3. Haz clic en Crear empleo para abrir un panel con opciones de empleo.

  4. Opcional: En Nombre de la tarea, introduce un nombre único para la tarea.

  5. En Endpoint regional, selecciona un valor del menú.

  6. Opcional: Haz clic en Mostrar parámetros opcionales y, a continuación, introduce los valores de las opciones de la canalización de Dataflow proporcionadas.

  7. En Destino, selecciona un Tipo de salida y, a continuación, introduce los valores de los campos proporcionados.

  8. Opcional: En la sección Parámetros de consulta SQL, añade parámetros y, a continuación, introduce valores en los campos correspondientes.

  9. Haz clic en Crear.

gcloud

Para ejecutar una consulta de Dataflow SQL, usa el comando gcloud dataflow sql query. A continuación, se muestra un ejemplo de consulta de SQL que crea

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

Haz los cambios siguientes:

  • JOB_NAME: nombre de la tarea de Dataflow SQL
  • REGION: la ubicación de Dataflow para implementar tu trabajo de Dataflow
  • BIGQUERY_TABLE: el nombre de la tabla de BigQuery en la que quieres escribir el resultado
  • BIGQUERY_DATASET: el ID del conjunto de datos de BigQuery que contiene la tabla de salida
  • BIGQUERY_PROJECT: el ID del proyecto Google Cloud que contiene la tabla de BigQuery de salida
  • SQL_QUERY: tu consulta de Dataflow SQL

Definir opciones de flujo de procesamiento

Puedes definir opciones de canalización de Dataflow para las tareas de Dataflow SQL. Las opciones de la canalización de Dataflow son parámetros de ejecución que configuran cómo y dónde ejecutar las consultas de Dataflow SQL.

Para definir las opciones de la canalización de Dataflow en las tareas de Dataflow SQL, especifica los siguientes parámetros al ejecutar una consulta de Dataflow SQL.

Consola

Parámetro Tipo Descripción Valor predeterminado
Endpoint regional String Región en la que se va a ejecutar la consulta. Las consultas de Dataflow SQL se pueden ejecutar en regiones que tengan una ubicación de Dataflow. Si no se define, el valor predeterminado es us-central1..
Número máximo de trabajadores int Número máximo de instancias de Compute Engine disponibles para tu flujo de procesamiento durante la ejecución. Si no se especifica, el servicio Dataflow determina automáticamente el número adecuado de trabajadores.
Región del trabajador String La región de Compute Engine para iniciar las instancias de trabajador que ejecuten tu flujo de procesamiento. La región de los trabajadores de Compute Engine puede ser distinta de la región de la tarea de Dataflow. Si no se define, se usará de forma predeterminada la región de Dataflow especificada.
Zona del trabajador String La zona de Compute Engine para iniciar las instancias de trabajador que ejecuten tu canalización. La zona de Compute Engine puede estar en una región distinta a la de la tarea de Dataflow.

Si no se define, se asigna de forma predeterminada una zona de la región del trabajador.

Si no se define la región del trabajador, se asigna de forma predeterminada una zona de la región de Dataflow especificada.

Correo de la cuenta de servicio String La dirección de correo de la cuenta de servicio de trabajador con la que ejecutar la canalización. La dirección de correo debe tener el formato my-service-account-name@<project-id>.iam.gserviceaccount.com. Si no se define, los trabajadores de Dataflow usan la cuenta de servicio de Compute Engine del proyecto actual como cuenta de servicio de trabajador.
Tipo de máquina String

El tipo de máquina de Compute Engine que usa Dataflow al iniciar los trabajadores. Puedes usar cualquiera de las familias de tipos de máquinas de Compute Engine disponibles, así como tipos de máquinas personalizadas.

Para obtener los mejores resultados, usa tipos de máquina n1. Los tipos de máquinas de núcleo compartido, como los trabajadores de las series f1 y g1, no se admiten en el acuerdo de nivel de servicio de Dataflow.

Ten en cuenta que Dataflow factura según el número de vCPUs y los GB de memoria de los trabajadores. La facturación es independiente de la familia de tipos de máquinas.

Si no se define, Dataflow elige automáticamente el tipo de máquina.
Experimentos adicionales String Los experimentos que se van a habilitar. Un experimento puede ser un valor, como enable_streaming_engine, o un par clave-valor, como shuffle_mode=service. Los experimentos deben estar en una lista separada por comas. Si no se especifica, no se habilita ningún experimento.
Configuración de direcciones IP de trabajadores String

Especifica si los trabajadores de Dataflow usan direcciones IP públicas.

Si el valor se configura como Private, los trabajadores de Dataflow usan direcciones IP privadas para todas las comunicaciones. El Network o Subnetwork especificado debe tener habilitado Acceso privado de Google.

Si el valor es Private y se especifica la opción Subnetwork, se ignora la opción Network.

Si no se define ningún valor, se utiliza Public de forma predeterminada.
Red String La red de Compute Engine a la que se asignan los trabajadores. Si no se define, se utiliza la red default de forma predeterminada.
Subred String La subred de Compute Engine a la que se asignan los trabajadores. La subred debe tener el formato regions/region/subnetworks/subnetwork. Si no se define, Dataflow determina automáticamente la subred.

gcloud

Bandera Tipo Descripción Valor predeterminado
‑‑region String Región en la que se va a ejecutar la consulta. Las consultas de Dataflow SQL se pueden ejecutar en regiones que tengan una ubicación de Dataflow. Si no se define, se produce un error.
‑‑max‑workers int Número máximo de instancias de Compute Engine disponibles para tu flujo de procesamiento durante la ejecución. Si no se especifica, Dataflow determina automáticamente un número adecuado de trabajadores.
‑‑num‑workers int Número inicial de instancias de Compute Engine que se van a usar al ejecutar tu flujo de procesamiento. Este parámetro determina cuántos trabajadores inicia Dataflow cuando empieza tu tarea. Si no se especifica, Dataflow determina automáticamente un número adecuado de trabajadores.
‑‑worker‑region String

La región de Compute Engine para iniciar las instancias de trabajador que ejecuten tu flujo de procesamiento. La región de los trabajadores de Compute Engine puede ser distinta de la región de la tarea de Dataflow.

Puede especificar uno de los siguientes valores: ‑‑worker‑region o ‑‑worker‑zone.

Si no se define, se usará de forma predeterminada la región de Dataflow especificada.
‑‑worker‑zone String

La zona de Compute Engine para iniciar las instancias de trabajador que ejecuten tu canalización. La zona de Compute Engine puede estar en una región distinta a la región del trabajo de Dataflow.

Puede especificar uno de los siguientes valores: ‑‑worker‑region o ‑‑worker‑zone.

Si no se define, se usará de forma predeterminada una zona de la región de Dataflow especificada.
‑‑worker‑machine‑type String

El tipo de máquina de Compute Engine que usa Dataflow al iniciar los trabajadores. Puedes usar cualquiera de las familias de tipos de máquinas de Compute Engine disponibles, así como tipos de máquinas personalizadas.

Para obtener los mejores resultados, usa tipos de máquina n1. Los tipos de máquinas de núcleo compartido, como los trabajadores de las series f1 y g1, no se admiten en el acuerdo de nivel de servicio de Dataflow.

Ten en cuenta que Dataflow factura según el número de vCPUs y los GB de memoria de los trabajadores. La facturación es independiente de la familia de tipos de máquinas.

Si no se define, Dataflow elige automáticamente el tipo de máquina.
‑‑service‑account‑email String La dirección de correo de la cuenta de servicio de trabajador con la que ejecutar la canalización. La dirección de correo debe tener el formato my-service-account-name@<project-id>.iam.gserviceaccount.com. Si no se define, los trabajadores de Dataflow usan la cuenta de servicio de Compute Engine del proyecto actual como cuenta de servicio de trabajador.
‑‑disable‑public‑ips boolean

Especifica si los trabajadores de Dataflow usan direcciones IP públicas.

Si se configura, los trabajadores de Dataflow usan direcciones IP privadas para todas las comunicaciones.

Si no se define, los trabajadores de Dataflow usan direcciones IP públicas.
‑‑network String La red de Compute Engine a la que se asignan los trabajadores. Si no se define, se utiliza la red default de forma predeterminada.
‑‑subnetwork String La subred de Compute Engine a la que se asignan los trabajadores. La subred debe tener el formato regions/region/subnetworks/subnetwork. Si no se define, Dataflow determina automáticamente la subred.
‑‑dataflow‑kms‑key String La clave de cifrado gestionada por el cliente (CMEK) que se usa para cifrar los datos en reposo. Puedes controlar la clave de cifrado a través de Cloud KMS. La clave debe estar en la misma ubicación que el trabajo. Si no se especifica, Dataflow usa el Google Cloud encriptado predeterminado en lugar de una CMEK.

Para obtener más información, consulta la referencia de comandos gcloud dataflow sql query.

Detener tareas de SQL de Dataflow

Para detener una tarea de Dataflow SQL, debes cancelarla. No se puede detener una tarea de Dataflow SQL con la opción drain.

Precios

Dataflow SQL usa los precios estándar de Dataflow y no tiene precios independientes. Se te facturan los recursos que consumen las tareas de Dataflow que creas en función de tus instrucciones SQL. Los cargos por estos recursos son los cargos estándar de Dataflow por vCPU, memoria, disco persistente, Streaming Engine y Dataflow Shuffle.

Una tarea de Dataflow SQL puede consumir recursos adicionales, como Pub/Sub y BigQuery, cada uno de los cuales se factura según su propio precio.

Para obtener más información sobre los precios de Dataflow, consulta la página Precios de Dataflow.

Siguientes pasos