Como usar o SQL do Dataflow

Esta página explica como usar o SQL do Dataflow e como criar jobs do SQL do Dataflow.

Para criar um job do SQL do Dataflow, grave e execute uma consulta do SQL do Dataflow.

Como usar a IU do SQL do Dataflow

A IU do SQL do Dataflow é uma configuração da IU da Web do BigQuery para criar jobs do SQL do Dataflow.

É possível acessar a IU do SQL do Dataflow na IU da Web do BigQuery.

  1. Acesse a IU do BigQuery na Web.

    Acessar a IU da Web do BigQuery

  2. Alterne para o Cloud Dataflow Engine.

    a. Clique no menu suspenso Mais e selecione Configurações de consulta.

    O menu suspenso "Mais" na IU da Web do BigQuery com a opção "Configurações da consulta" selecionada

    a. No menu Configurações de consulta, selecione Dataflow Engine.

    a. No prompt exibido, se as APIs Dataflow e Data Catalog não estiverem ativadas, clique em Ativar APIs.

    O menu "Configurações da consulta" com o prompt "Ativar APIs"

    a. Clique em Save.

    O menu de "Configurações da consulta" com o botão de opção do Dataflow Engine selecionado e as APIs ativadas

Também é possível acessar a IU do SQL do Dataflow na interface de monitoramento do Dataflow.

  1. Acesse a interface de monitoramento do Dataflow.

    Acessar a interface de monitoramento do Dataflow

  2. Clique em Criar job do SQL.

Como gravar consultas do SQL do Dataflow

As consultas do SQL do Dataflow usam a sintaxe de consulta SQL do Dataflow. A sintaxe de consulta SQL do Dataflow é semelhante ao SQL padrão do BigQuery.

É possível usar as extensões de streaming do SQL do Dataflow para agregar dados de fontes do Dataflow de atualização contínua, como o Pub/Sub.

Por exemplo, a consulta a seguir conta os passageiros em um fluxo do Pub/Sub de corridas de táxi a 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')

Como executar consultas do SQL do Dataflow

Quando você executa uma consulta do SQL do Dataflow, o Dataflow transforma a consulta em um pipeline do Apache Beam e executa o pipeline.

É possível executar uma consulta do SQL do Dataflow usando o Console do Cloud ou a ferramenta de linha de comando gcloud.

Console

Para executar uma consulta do SQL do Dataflow, use a IU do SQL do Dataflow.

  1. Acesse a IU do Dataflow SQL.

    Acessar a IU do Dataflow SQL

  2. Digite a consulta do Dataflow SQL no editor de consultas.

  3. Clique em Criar job do Cloud Dataflow para abrir um painel de opções de job.

  4. Opcional: clique em Mostrar parâmetros opcionais e defina as Opções de pipeline do Dataflow.

  5. Na seção Destino do painel, selecione um Tipo de saída.

  6. Clique em Criar

gcloud

Para executar uma consulta do SQL do Dataflow, use o 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 mais informações sobre como consultar dados e gravar os resultados da consulta do SQL do Dataflow, consulte Como usar fontes de dados e destinos.

Como definir opções do Pipeline

É possível definir opções do pipeline do Dataflow para jobs do SQL do Dataflow. As opções de pipeline do Dataflow são parâmetros de execução que configuram como e onde executar consultas do SQL do Dataflow.

Para definir opções de pipeline para jobs do SQL do Dataflow, especifique os seguintes parâmetros ao executar uma consulta do SQL do Dataflow.

Console

Parâmetro Tipo Descrição Valor padrão
Endpoint regional String A região em que a consulta será executada. As consultas do SQL do Dataflow podem ser executadas em regiões que tenham um endpoint regional do Dataflow. Se não for definido, o padrão será us-central1..
Número máximo de workers int O número máximo de instâncias do Compute Engine disponíveis para o pipeline durante a execução. Se não tiver sido especificado, um número adequado de workers será determinado pelo serviço do Dataflow.
Região do worker String A região do Compute Engine para iniciar instâncias de worker para executar o pipeline. A região do worker do Compute Engine pode estar em uma região diferente do que o endpoint regional do Dataflow. Se não for definido, será usado o padrão do endpoint regional do Dataflow especificado.
Zona do worker String A zona do Compute Engine para inicialização de instâncias de worker a fim de executar o pipeline. A zona do Compute Engine pode estar em uma região diferente do que o endpoint regional do Dataflow.

Se não for definido, o padrão usado será uma zona na região do worker.

Se a região do worker não for definida, o padrão será uma zona no endpoint regional especificado do Dataflow.

E-mail da conta de serviço String O endereço de e-mail da conta de serviço do controlador com que o pipeline será executado. O endereço de e-mail precisa estar no formato my-service-account-name@<project-id>.iam.gserviceaccount.com. Se não for definido, os workers do Dataflow usarão a conta de serviço do Compute Engine do projeto atual como a conta de serviço do controlador.
Tipo de máquina String

O tipo de máquina do Compute Engine que o Dataflow usa ao iniciar os workers. É possível usar qualquer uma das famílias de tipos de máquinas do Compute Engine disponíveis, bem como tipos de máquinas personalizadas.

Para melhores resultados, use tipos de máquina n1. Os tipos de máquina com núcleo compartilhado, como workers da série f1 e g1, não recebem suporte de acordo com o Contrato de nível de serviço do Dataflow.

O Dataflow cobra pelo número de vCPUs e GB de memória nos workers. O faturamento não depende da família de tipos de máquinas.

Se não for definido, o Dataflow escolherá automaticamente o tipo de máquina.
Outros experimentos String Os experimentos a ativar. Um experimento pode ser um valor, como enable_streaming_engine, ou um par de chave-valor, como shuffle_mode=service. Os experimentos precisam estar em uma lista separada por vírgulas. Se não for especificado, nenhum experimento será ativado.
Configuração do endereço IP do worker String

Especifica se os workers do Cloud Dataflow usarão endereços IP públicos.

Se o valor estiver definido como Private, os workers do Dataflow usarão endereços IP privados para todas as comunicações. O Network ou o Subnetwork especificado precisam ter o Acesso particular do Google ativado.

Se o valor for definido como Private e a opção Subnetwork for especificada, a opção Network será ignorada.

Se não for definido, o padrão será Public.
Rede String A rede do Compute Engine à qual os workers são atribuídos. Se não for definido, o padrão será a rede default.
Sub-rede String A sub-rede do Compute Engine à qual os workers são atribuídos. A sub-rede precisa estar no formato regions/region/subnetworks/subnetwork. Se não for definido, o Dataflow determinará automaticamente a sub-rede.

gcloud

Flag Tipo Descrição Valor padrão
‑‑region String A região em que a consulta será executada. As consultas do SQL do Dataflow podem ser executadas em regiões que tenham um endpoint regional do Dataflow. Se não está definido, um erro é emitido.
‑‑max‑workers int O número máximo de instâncias do Compute Engine disponíveis para o pipeline durante a execução. Se não for especificado, o Dataflow determinará automaticamente um número apropriado de workers.
‑‑num‑workers int O número inicial de instâncias do Compute Engine a serem usadas na execução do pipeline. Esse parâmetro determina quantos workers são iniciados no Dataflow quando o job começa. Se não for especificado, o Dataflow determinará automaticamente um número apropriado de workers.
‑‑worker‑region String

A região do Compute Engine para iniciar instâncias de worker a fim de executar o pipeline. A região do worker do Compute Engine pode estar em uma região diferente do que o endpoint regional do Dataflow.

É possível especificar ‑‑worker‑region ou ‑‑worker‑zone.

Se não for definido, será usado o padrão do endpoint regional do Dataflow especificado.
‑‑worker‑zone String

A zona do Compute Engine para inicialização de instâncias de worker a fim de executar o pipeline. A zona do Compute Engine pode estar em uma região diferente do que o endpoint regional do Dataflow.

É possível especificar ‑‑worker‑region ou ‑‑worker‑zone.

Se não for definido, o padrão será uma zona no endpoint regional especificado do Dataflow.
‑‑worker‑machine‑type String

O tipo de máquina do Compute Engine que o Dataflow usa ao iniciar os workers. É possível usar qualquer uma das famílias de tipos de máquinas do Compute Engine disponíveis, bem como tipos de máquinas personalizadas.

Para melhores resultados, use tipos de máquina n1. Os tipos de máquina com núcleo compartilhado, como workers da série f1 e g1, não recebem suporte de acordo com o Contrato de nível de serviço do Dataflow.

O Dataflow cobra pelo número de vCPUs e GB de memória nos workers. O faturamento não depende da família de tipos de máquinas.

Se não for definido, o Dataflow escolherá automaticamente o tipo de máquina.
‑‑service‑account‑email String O endereço de e-mail da conta de serviço do controlador com que o pipeline será executado. O endereço de e-mail precisa estar no formato my-service-account-name@<project-id>.iam.gserviceaccount.com. Se não for definido, os workers do Dataflow usarão a conta de serviço do Compute Engine do projeto atual como a conta de serviço do controlador.
‑‑disable‑public‑ips boolean

Especifica se os workers do Cloud Dataflow usarão endereços IP públicos.

Se definidos, os workers do Dataflow usam endereços IP particulares para todas as comunicações.

Se não forem definidos, os workers do Dataflow usarão endereços IP públicos.
‑‑network String A rede do Compute Engine à qual os workers são atribuídos. Se não for definido, o padrão será a rede default.
‑‑subnetwork String A sub-rede do Compute Engine à qual os workers são atribuídos. A sub-rede precisa estar no formato regions/region/subnetworks/subnetwork. Se não for definido, o Dataflow determinará automaticamente a sub-rede.
‑‑dataflow‑kms‑key String A chave de criptografia gerenciada pelo cliente (CMEK, na sigla em inglês) usada para criptografar dados em repouso. É possível controlar a chave de criptografia usando o Cloud KMS. A chave precisa estar no mesmo local do job. Se não for especificado, o Dataflow usará a criptografia padrão do Google Cloud em vez de um CMEK.

Para mais informações, consulte a referência do comando gcloud dataflow sql query.

Como interromper jobs do SQL do Dataflow

Para interromper os jobs do Dataflow SQL, use o comando Cancelar. Não é possível interromper um job do SQL do Dataflow com o Drain.

Preço

O SQL do Dataflow usa os preços padrão do Dataflow. Ele não tem preços separados. Você é cobrado pelos recursos consumidos pelos jobs do Dataflow criados com base nas suas instruções SQL. As cobranças para esses recursos são as cobranças padrão do Dataflow para vCPU, memória, disco permanente, Streaming Engine e Dataflow Shuffle.

Um job do SQL do Dataflow pode consumir recursos adicionais, como o Pub/Sub e o BigQuery, cada um cobrado de acordo com os próprios preços.

Para obter mais informações sobre preços do Dataflow, consulte a página de preços do Dataflow.

A seguir