Usa Dataflow SQL

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

Para crear un trabajo de Dataflow SQL, escribe y ejecuta una consulta de Dataflow SQL.

Usa la IU de Dataflow SQL

La IU de Dataflow SQL es una configuración de IU web de BigQuery para crear trabajos de Dataflow SQL.

Puedes acceder a la IU de Dataflow SQL desde la IU web de BigQuery.

  1. Ve a la IU web de BigQuery.

    Ir a IU web de BigQuery

  2. Cambia al motor de Cloud Dataflow.

    a. Haz clic en el menú desplegable Más (More) y selecciona Configuración de consulta (Query settings).

    El menú desplegable Más en la IU web de BigQuery con la opción Configuración de consulta seleccionada

    a. En el menú Configuración de consulta (Query settings), selecciona Motor de Dataflow (Dataflow engine).

    a. En el mensaje que aparece si las API de Dataflow y Data Catalog no están habilitadas, haz clic en Habilitar API (Enable APIs).

    El menú Configuración de consulta con el mensaje Habilitar API

    a. Haz clic en Guardar (Save).

    El menú Configuración de consulta con el botón de selección Motor de Dataflow seleccionado y las API habilitadas

También puedes acceder a la IU de Dataflow SQL desde la interfaz de supervisión de Dataflow.

  1. Ve a la interfaz de supervisión de Dataflow.

    Ir a la interfaz de supervisión de Dataflow

  2. Haz clic en Crear trabajo a partir de SQL.

Escribe consultas de Dataflow SQL

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

Puedes usar las extensiones de transmisión de Dataflow SQL para agregar datos de fuentes de Dataflow que se actualizan de forma continua, como Pub/Sub.

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

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')

Ejecuta consultas de Dataflow SQL

Cuando ejecutas una consulta de Dataflow SQL, Dataflow convierte la consulta en una canalización de Apache Beam y ejecuta la canalización.

Puedes ejecutar una consulta de Dataflow SQL mediante Cloud Console o la herramienta de línea de comandos de gcloud.

Console

Para ejecutar una consulta de Dataflow SQL, usa la IU de Dataflow SQL.

  1. Ve a la IU de Dataflow SQL.

    Ir a la IU de Dataflow SQL

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

  3. Haz clic en Crear trabajo de Cloud Dataflow para abrir un panel de opciones de trabajo.

  4. Haz clic en Mostrar parámetros opcionales y configura las opciones de canalización de Dataflow (opcional).

  5. En la sección Destino del panel, selecciona un Tipo de salida.

  6. Haz clic en Crear.

gcloud

Para ejecutar una consulta de Dataflow SQL, usa el comando gcloud dataflow sql query.

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

Para obtener más información sobre cómo consultar datos y escribir resultados de consultas de Dataflow SQL, consulta Usa destinos y fuentes de datos.

Configura las opciones de canalización

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

A fin de configurar las opciones de canalización de Dataflow para trabajos de Dataflow SQL, especifica los siguientes parámetros cuando ejecutes una consulta de Dataflow SQL.

Console

Parámetro Tipo Descripción Valor predeterminado
Extremo regional String La región en la que se ejecutará la consulta. Las consultas de Dataflow SQL se pueden ejecutar en regiones que tienen un extremo regional de Dataflow. Si no se establece, el valor predeterminado es us-central1..
Cantidad máxima de trabajadores int La cantidad máxima de instancias de Compute Engine disponibles para tu canalización durante la ejecución. Si no se especifica, el servicio de Dataflow determina de forma automática una cantidad adecuada de trabajadores.
Región de trabajador String La región de Compute Engine para iniciar instancias de trabajador a fin de ejecutar tu canalización. La región de trabajador de Compute Engine puede estar en una región diferente que el extremo regional de Dataflow. Si no se configura, se establece de forma predeterminada en el extremo regional de Dataflow especificado.
Zona de trabajador String La zona de Compute Engine para iniciar instancias de trabajador y ejecutarlas en tu canalización. La zona de Compute Engine puede estar en una región diferente del extremo regional de Dataflow.

Si no se configura, se establece de forma predeterminada en una zona en la región de trabajador.

Si la región de trabajador no se configura, se establece de manera predeterminada en una zona en el extremo regional de Dataflow especificado.

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

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

Para obtener mejores resultados, usa tipos de máquina n1. Los tipos de máquinas de núcleo compartido, como los trabajadores de la serie f1 y g1, no son compatibles con el Acuerdo de Nivel de Servicio de Dataflow.

Ten en cuenta que Dataflow factura por la cantidad de CPU virtuales y GB de memoria en los trabajadores. La facturación es independiente de la familia de tipos de máquinas.

Si no se configura, Dataflow elige de forma automática el tipo de máquina.
Experimentos adicionales String Los experimentos que se habilitarán. 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 habilitarán experimentos.
Configuración de la dirección IP del trabajador String

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

Si el valor se establece en Private, los trabajadores de Dataflow usan direcciones IP privadas para todas las comunicaciones. La Network o Subnetwork especificada debe tener habilitado el Acceso privado a Google.

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

Si no se establece, el valor predeterminado es Public.
Red String La red de Compute Engine a la que se asignan los trabajadores. Si no se configura, se establece de forma predeterminada en la red default.
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 configura, Dataflow determina de forma automática la subred.

gcloud

Marca Tipo Descripción Valor predeterminado
‑‑region String La región en la que se ejecutará la consulta. Las consultas de Dataflow SQL se pueden ejecutar en regiones que tienen un extremo regional de Dataflow. Si no se configura, muestra un error.
‑‑max‑workers int La cantidad máxima de instancias de Compute Engine disponibles para tu canalización durante la ejecución. Si no se especifica, Dataflow determina de forma automática una cantidad adecuada de trabajadores.
‑‑num‑workers int La cantidad inicial de instancias de Compute Engine que se usarán cuando ejecutes tu canalización. Con este parámetro, se determina cuántos trabajadores inicia Dataflow cuando comienza tu trabajo. Si no se especifica, Dataflow determina de forma automática una cantidad adecuada de trabajadores.
‑‑worker‑region String

La región de Compute Engine para iniciar instancias de trabajador a fin de ejecutar tu canalización. La región de trabajador de Compute Engine puede estar en una región diferente que el extremo regional de Dataflow.

Puedes especificar una de ‑‑worker‑region o ‑‑worker‑zone.

Si no se configura, se establece de forma predeterminada en el extremo regional de Dataflow especificado.
‑‑worker‑zone String

La zona de Compute Engine para iniciar instancias de trabajador y ejecutarlas en tu canalización. La zona de Compute Engine puede estar en una región diferente del extremo regional de Dataflow.

Puedes especificar una de ‑‑worker‑region o ‑‑worker‑zone.

Si no se configura, se establece de forma predeterminada en una zona en el extremo regional de Dataflow especificado.
‑‑worker‑machine‑type String

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

Para obtener mejores resultados, usa tipos de máquina n1. Los tipos de máquinas de núcleo compartido, como los trabajadores de la serie f1 y g1, no son compatibles con el Acuerdo de Nivel de Servicio de Dataflow.

Ten en cuenta que Dataflow factura por la cantidad de CPU virtuales y GB de memoria en los trabajadores. La facturación es independiente de la familia de tipos de máquinas.

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

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

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

Si no se configura, los valores predeterminados de false y 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 configura, se establece de forma predeterminada en la red default.
‑‑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 configura, Dataflow determina de forma automática la subred.
‑‑dataflow‑kms‑key String La clave de encriptación administrada por el cliente (CMEK) que se usa para encriptar datos en reposo. Puedes controlar la clave de encriptación a través de Cloud KMS. La clave debe estar en la misma ubicación que el trabajo. Si no se especifica, Dataflow usa la encriptación de Google Cloud predeterminada en lugar de una CMEK.

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

Detén trabajos de Dataflow SQL

Para detener los trabajos de Dataflow SQL, usa el comando Cancel. No se admite la detención de un trabajo de Dataflow SQL con Drain.

Precios

Dataflow SQL usa el precio estándar de Dataflow; los precios son los mismos. Se te factura por los recursos que consumen los trabajos de Dataflow que creas en función de tus instrucciones de SQL. Los cargos de estos recursos son los cargos estándar de Dataflow para CPU virtual, memoria, Persistent Disk, transmisión de datos y Dataflow Shuffle.

Un trabajo de Dataflow SQL puede consumir recursos adicionales como Pub/Sub y BigQuery, que se facturan según sus propios precios.

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

Próximos pasos