Transferências baseadas em eventos
As transferências orientadas por eventos no serviço de transferência de dados do BigQuery permitem carregar dados automaticamente no BigQuery em resposta a notificações de eventos. Use essa abordagem para ingestão em lote incremental e econômica quando sua carga de trabalho puder tolerar um atraso de alguns minutos entre as execuções de transferência. Se você precisar de disponibilidade de dados em tempo real com menor latência, use a API Storage Write para transmitir dados diretamente para o BigQuery.
Fontes de dados compatíveis com transferências baseadas em eventos
O serviço de transferência de dados do BigQuery pode usar transferências orientadas a eventos com as seguintes fontes de dados:
Limitações
As transferências orientadas a eventos para o BigQuery estão sujeitas às seguintes limitações:
- Depois que uma transferência orientada por eventos é acionada, o serviço de transferência de dados do BigQuery aguarda até 10 minutos antes de acionar a próxima execução de transferência, independentemente de um evento chegar nesse período.
- As transferências orientadas por eventos não são compatíveis com parâmetros de ambiente de execução para o URI de origem ou o caminho de dados.
- A mesma assinatura do Pub/Sub não pode ser reutilizada por várias configurações de transferência orientada a eventos.
Configurar uma transferência baseada em eventos do Cloud Storage
As transferências baseadas em eventos do Cloud Storage usam notificações do Pub/Sub para saber quando os objetos no bucket de origem foram modificados ou adicionados. Ao usar o modo de transferência incremental, excluir um objeto no bucket de origem não exclui os dados associados na tabela do BigQuery de destino.
Antes de começar
Antes de configurar uma transferência orientada a eventos do Cloud Storage, siga estas etapas:
Ative a API Pub/Sub para o projeto que recebe notificações.
Se você for o administrador do Cloud Storage (
roles/storage.admin) e do Pub/Sub (roles/pubsub.admin), prossiga para Criar uma configuração de transferência orientada a eventos.Se você não for o administrador do Cloud Storage (
roles/storage.admin) e do Pub/Sub (roles/pubsub.admin), peça ao administrador para conceder a você os papéisroles/storage.admineroles/pubsub.adminou para concluir as etapas Configurar o Pub/Sub e Configurar as permissões do agente de serviço nas seções a seguir e usar a assinatura pré-configurada do Pub/Sub para criar uma configuração de transferência orientada a eventos.Permissões detalhadas necessárias para configurar notificações de configuração de transferência orientada por eventos:
Se você planeja criar tópicos e assinaturas para publicar notificações, é preciso ter as permissões
pubsub.topics.createepubsub.subscriptions.create.Se você planeja usar tópicos e assinaturas novos ou atuais, é preciso ter as seguintes permissões. Se você já criou tópicos e assinaturas no Pub/Sub, provavelmente já tem essas permissões.
Você precisa ter as seguintes permissões no bucket do Cloud Storage em que quer configurar as notificações do Pub/Sub.
storage.buckets.getstorage.buckets.update
Os papéis predefinidos do IAM
pubsub.adminestorage.admintêm todas as permissões necessárias para configurar uma transferência orientada por eventos do Cloud Storage. Para mais informações, consulte Controle de acesso do Pub/Sub.
Configurar notificações do Pub/Sub no Cloud Storage
Verifique se você atende aos Pré-requisitos para usar o Pub/Sub com o Cloud Storage.
Aplique uma configuração de notificação ao bucket do Cloud Storage:
gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME --event-types=OBJECT_FINALIZE
Substitua:
BUCKET_NAME: o nome do bucket do Cloud Storage em que você quer acionar eventos de notificação de arquivos.TOPIC_NAME: o nome do tópico do Pub/Sub em que você quer receber os eventos de notificação de arquivo.
Também é possível adicionar uma configuração de notificação usando outros métodos além da CLI gcloud. Para mais informações, consulte Aplicar uma configuração de notificação.
Verifique se a notificação do Pub/Sub está configurada corretamente para o Cloud Storage. Use o comando
gcloud storage buckets notifications list:gcloud storage buckets notifications list gs://BUCKET_NAME
Se a operação for bem-sucedida, a resposta será semelhante a esta:
etag: '132' id: '132' kind: storage#notification payload_format: JSON_API_V1 selfLink: https://www.googleapis.com/storage/v1/b/my-bucket/notificationConfigs/132 topic: //pubsub.googleapis.com/projects/my-project/topics/my-bucket
Criar uma assinatura por pull no tópico:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME
Substitua
SUBSCRIPTION_IDpelo nome ou ID da nova assinatura por pull do Pub/Sub.É possível criar uma assinatura por pull usando outros métodos.
Configurar permissões do agente de serviço
Encontre o nome do agente do serviço de transferência de dados do BigQuery para seu projeto:
Acesse a página IAM e administrador.
Marque a caixa de seleção Incluir concessões de papel fornecidas pelo Google.
O agente do serviço de transferência de dados do BigQuery é listado com o nome
service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.come recebe o papel de agente do serviço de transferência de dados do BigQuery (roles/bigquerydatatransfer.serviceAgent).
Para mais informações sobre agentes de serviço, consulte Agentes de serviço.
Conceda o papel de assinante do Pub/Sub (
pubsub.subscriber) ao agente do serviço de transferência de dados do BigQuery.Console do Cloud
Siga as instruções em Como controlar o acesso usando o console do Google Cloud para conceder o papel
Pub/Sub Subscriberao agente do serviço de transferência de dados do BigQuery. O papel pode ser concedido no nível do tópico, da assinatura ou do projeto.CLI
gcloudSiga as instruções em Como definir uma política para adicionar a seguinte vinculação:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com" }
Substitua
PROJECT_NUMBERpelo ID do projeto que hospeda os recursos de transferência criados e faturados.Atribuição de uso da cota:quando o agente do serviço de transferência de dados do BigQuery acessa a assinatura do Pub/Sub, o uso da cota é cobrado do projeto do usuário.
Verifique se o agente do serviço de transferência de dados do BigQuery recebeu o papel de assinante do Pub/Sub (
pubsub.subscriber).No console Google Cloud , acesse a página Pub/Sub.
Selecione a assinatura do Pub/Sub que você usou na transferência orientada por eventos.
Se o painel de informações estiver oculto, clique em Mostrar painel de informações no canto superior direito.
Na guia Permissões, verifique se o agente de serviço do serviço de transferência de dados do BigQuery tem o papel de assinante do Pub/Sub (
pubsub.subscriber).

Comandos resumidos para configurar notificações e permissões
Os comandos da Google Cloud CLI a seguir incluem todos os comandos necessários para configurar notificações e permissões, conforme detalhado nas seções anteriores.
gcloud
PROJECT_ID=project_id CONFIG_NAME=config_name RESOURCE_NAME="bqdts-event-driven-${CONFIG_NAME}" # Create a Pub/Sub topic. gcloud pubsub topics create "${RESOURCE_NAME}" --project="${PROJECT_ID}" # Create a Pub/Sub subscription. gcloud pubsub subscriptions create "${RESOURCE_NAME}" --project="${PROJECT_ID}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}" # Create a Pub/Sub notification. gcloud storage buckets notifications create gs://"${RESOURCE_NAME}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}" --event-types=OBJECT_FINALIZE # Grant roles/pubsub.subscriber permission to the DTS service agent. PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format='value(projectNumber)') gcloud pubsub subscriptions add-iam-policy-binding "${RESOURCE_NAME}" --project="${PROJECT_ID}" --member=serviceAccount:service-"${PROJECT_NUMBER}"@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com --role=roles/pubsub.subscriber
Substitua:
PROJECT_ID: o ID do seu projeto.CONFIG_NAME: um nome para identificar essa configuração de transferência.
Criar uma configuração de transferência
Para criar uma transferência baseada em eventos do Cloud Storage, crie uma transferência do Cloud Storage e selecione Baseada em eventos como o Tipo de programação. Como administrador do Cloud Storage (roles/storage.admin) e do Pub/Sub (roles/pubsub.admin), você tem permissões suficientes para que o serviço de transferência de dados do BigQuery configure automaticamente o Cloud Storage para enviar notificações.
Se você não for o administrador do Cloud Storage (roles/storage.admin) e do Pub/Sub (roles/pubsub.admin), peça ao administrador para conceder os papéis ou concluir as notificações do Pub/Sub necessárias nas configurações do Cloud Storage e as configurações de permissão do agente de serviço antes de criar a transferência orientada a eventos.