Neste documento, descrevemos como criar uma assinatura do BigQuery. É possível usar o console do Google Cloud, a CLI do Google Cloud, a biblioteca de cliente ou a API Pub/Sub para criar uma assinatura do BigQuery.
Antes de começar
Antes de ler este documento, certifique-se de que você esteja familiarizado com o seguinte:
Como as assinaturas funcionam.
O fluxo de trabalho das assinaturas do BigQuery.
Como configurar um tópico de mensagens inativas para lidar com falhas de mensagens.
Além de conhecer o Pub/Sub e o BigQuery, verifique se você atende aos pré-requisitos a seguir antes de criar uma assinatura do BigQuery:
Existe uma tabela do BigQuery. Como alternativa, crie um ao criar a assinatura do BigQuery, conforme descrito em nas próximas seções deste documento.
a compatibilidade entre o esquema do tópico do Pub/Sub e na tabela do BigQuery. Se você adicionar um bloco de anúncios Tabela do BigQuery, você recebe um erro relacionado à compatibilidade mensagem. Para mais informações, consulte Compatibilidade de esquema.
Papéis e permissões necessárias
Confira a seguir uma lista de diretrizes relacionadas a papéis e permissões:
Para criar uma assinatura, você precisa configurar o controle de acesso no projeto nível
Você também precisa de permissões no nível do recurso se as suas assinaturas e tópicos estiverem em projetos diferentes, conforme discutido mais adiante nesta seção.
Para criar uma assinatura do BigQuery, a conta de serviço do Pub/Sub precisa ter permissão para gravar na tabela específica do BigQuery. Para mais informações sobre como conceder essas permissões, consulte a próxima seção deste documento.
É possível configurar uma assinatura do BigQuery em um projeto para gravar em uma tabela do BigQuery em outro projeto.
Para receber as permissões necessárias para criar assinaturas do BigQuery,
peça ao administrador para conceder a você o
papel do IAM de Editor do Pub/Sub (roles/pubsub.editor
) no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar assinaturas do BigQuery. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar assinaturas do BigQuery:
-
Extrair de uma assinatura:
pubsub.subscriptions.consume
-
Criar uma assinatura:
pubsub.subscriptions.create
-
Para excluir uma assinatura:
pubsub.subscriptions.delete
-
Assinar uma assinatura:
pubsub.subscriptions.get
-
Listar uma assinatura:
pubsub.subscriptions.list
-
Atualizar uma assinatura:
pubsub.subscriptions.update
-
Anexe uma assinatura a um tópico:
pubsub.topics.attachSubscription
-
Acesse a política do IAM para uma assinatura:
pubsub.subscriptions.getIamPolicy
-
Configure a política do IAM para uma assinatura:
pubsub.subscriptions.setIamPolicy
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Se você precisar criar modelos do BigQuery
assinaturas de um projeto que estão associadas a um tópico em outro
projeto, peça ao administrador do tópico para conceder a você o papel de Editor do Pub/Sub
(roles/pubsub.editor)
no tópico.
Atribuir papéis do BigQuery à conta de serviço do Pub/Sub
Alguns serviços do Google Cloud têm contas serviço gerenciado pelo Google Cloud, o que permite
e serviços acessem seus recursos. Essas contas de serviço são
conhecidas como agentes de serviço. O Pub/Sub cria e mantém uma
conta de serviço para cada projeto no formato
service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
.
Para criar uma assinatura do BigQuery, a conta de serviço do Pub/Sub precisa ter permissão para gravar na tabela específica do BigQuery e ler os metadados dela.
Conceda o papel de editor de dados do BigQuery (roles/bigquery.dataEditor
)
à conta de serviço do Pub/Sub.
No console do Google Cloud, abra a página IAM.
Clique em Conceder acesso.
Na seção Adicionar principais, insira o nome do seu Pub/Sub conta de serviço. O formato da conta de serviço é
service-project-number@gcp-sa-pubsub.iam.gserviceaccount.com
. Por exemplo, para um projeto comproject-number=112233445566
, a conta de serviço tem o formatoservice-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
.Na seção Atribuir funções, clique em Adicionar outro papel.
No menu suspenso Selecionar papel, insira
BigQuery
. e selecione o papel Editor de dados do BigQuery.Clique em Salvar.
Para mais informações sobre o IAM do BigQuery, consulte Funções e permissões do BigQuery.
Propriedades da assinatura do BigQuery
Ao configurar uma assinatura do BigQuery, é possível especificar as seguintes propriedades.
Propriedades comuns
Saiba mais sobre as propriedades comuns de assinatura que podem ser definidas em todas as assinaturas.
Usar esquema de tópicos
Essa opção permite que o Pub/Sub use o esquema do tópico do Pub/Sub a que o em anexo. Além disso, o Pub/Sub grava os campos nas mensagens para colunas na tabela do BigQuery.
Ao usar essa opção, verifique os seguintes requisitos:
Os campos no esquema do tópico e no BigQuery precisam ter os mesmos nomes, e os tipos precisam ser compatíveis entre si.
Qualquer campo opcional no esquema do tópico também precisa ser opcional no esquema do BigQuery.
Os campos obrigatórios no esquema do tópico não precisam ser obrigatórios no esquema do BigQuery.
Se houver campos do BigQuery que não estão presentes no esquema de tópicos, esses campos do BigQuery precisa estar no modo
NULLABLE
.Se o esquema de tópicos tiver outros campos que não estão presentes no esquema do BigQuery, campos podem ser descartados, selecione a opção Descartar campos desconhecidos.
É possível selecionar apenas uma das propriedades de assinatura: Usar esquema de tópicos ou Usar esquema de tabela.
Se você não selecionar a opção Usar esquema de tópicos ou Usar esquema de tabela,
verifique se a tabela do BigQuery tem uma coluna chamada data
de
digite BYTES
, STRING
ou JSON
. O Pub/Sub grava a mensagem nessa coluna do BigQuery.
Talvez você não veja alterações no esquema de tópicos do Pub/Sub ou O esquema da tabela do BigQuery entra em vigor imediatamente com mensagens gravados na tabela do BigQuery. Por exemplo, se Drop a opção de campos desconhecidos está ativada e há um campo presente na o esquema do Pub/Sub, mas não o do BigQuery, mensagens gravadas na tabela do BigQuery podem não conter depois de adicioná-lo ao esquema do BigQuery. Eventualmente, os esquemas são sincronizados e as mensagens subsequentes incluem o campo.
Ao usar a opção Usar esquema de tópico na sua assinatura do BigQuery, você também pode aproveitar a captura de dados de mudança (CDC) do BigQuery. A CDC atualiza as tabelas do BigQuery processando e aplicando as mudanças às linhas atuais.
Para saber mais sobre esse recurso, consulte Fazer streaming de atualizações da tabela com captura de dados alterados.
Para aprender a usar esse recurso com assinaturas do BigQuery, consulte Captura de dados alterados do BigQuery.
Usar esquema de tabela
Essa opção permite que o Pub/Sub use o esquema da tabela do BigQuery para gravar os campos de uma mensagem JSON nas colunas correspondentes. Ao usar essa opção, lembre-se de verifique os seguintes requisitos adicionais:
As mensagens publicadas precisam estar no formato JSON.
As seguintes conversões JSON são compatíveis:
Tipo JSON Tipo de dados do BigQuery string
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
ouTIMESTAMP
number
NUMERIC
,BIGNUMERIC
,DATE
,TIME
,DATETIME
ouTIMESTAMP
- Ao usar conversões de
number
paraDATE
,DATETIME
,TIME
ouTIMESTAMP
, o número precisa aderir às representações compatíveis. - Ao usar a conversão de
number
paraNUMERIC
ouBIGNUMERIC
, a precisão e o intervalo de valores são limitados aos aceitos pelo padrão IEEE 754 para aritmética de ponto flutuante. Se você precisar de alta precisão ou um intervalo maior de valores, use as conversões destring
paraNUMERIC
ouBIGNUMERIC
. - Ao usar conversões de
string
paraNUMERIC
ouBIGNUMERIC
, o Pub/Sub supõe que a string é um número legível por humanos (por exemplo,"123.124"
). Se o processamento da string como um número legível falhar, o Pub/Sub a trata como bytes codificados com o BigDecimalByteStringEncoder.
- Ao usar conversões de
Se o tópico da assinatura tiver um esquema associado, a propriedade de codificação da mensagem precisará ser definida como
JSON
.Se houver campos do BigQuery que não estão presentes no as mensagens, esses campos do BigQuery precisam estar no modo
NULLABLE
.Se as mensagens tiverem campos adicionais que não estão presentes no esquema do BigQuery e esses campos puderem ser descartados, selecione a opção Drop unknown fields.
É possível selecionar apenas uma das propriedades de assinatura: Usar esquema de tópicos ou Usar esquema de tabela.
Se você não selecionar a opção Usar esquema de tópicos ou Usar esquema de tabela,
verifique se a tabela do BigQuery tem uma coluna chamada data
de
tipo BYTES
, STRING
ou JSON
. O Pub/Sub grava a mensagem nessa coluna do BigQuery.
Talvez você não veja as alterações no esquema da tabela do BigQuery imediatamente com mensagens gravadas na tabela do BigQuery. Por exemplo, se a opção Descartar campos desconhecidos estiver ativada e um campo for presentes nas mensagens, mas não no esquema do BigQuery, mensagens gravadas na tabela do BigQuery podem não conter depois de adicioná-lo ao esquema do BigQuery. Eventualmente, o esquema é sincronizado e as mensagens seguintes incluem o campo.
Ao usar a opção Usar esquema de tabela na sua assinatura do BigQuery, você também pode aproveitar a captura de dados alterados (CDC) do BigQuery. A CDC atualiza as tabelas do BigQuery processando e aplicando mudanças às linhas existentes.
Para saber mais sobre esse recurso, consulte Fazer streaming de atualizações de tabelas com captura de dados alterados.
Para saber como usar esse recurso com assinaturas do BigQuery, consulte Captura de dados alterados do BigQuery.
Remover campos desconhecidos
Essa opção é usada com a opção Usar esquema de tópicos ou Usar esquema de tabela. Essa opção permite que o Pub/Sub remova qualquer campo presente no tópico ou mensagem, mas não no esquema do BigQuery. Sem a opção Drop unknown fields definida, as mensagens com campos extras não são gravadas no BigQuery e permanecem no backlog de assinatura. A assinatura acaba em um estado de erro.
Gravar metadados
Essa opção permite que o Pub/Sub gravar os metadados de cada mensagem em colunas adicionais na Tabela do BigQuery. Caso contrário, os metadados não serão gravados na tabela do BigQuery.
Se você selecionar a opção Gravar metadados, verifique se a tabela do BigQuery tem os campos descritos na tabela a seguir.
Se você não selecionar a opção Gravar metadados, a tabela de destino do BigQuery só vai exigir o campo data
, a menos que
use_topic_schema
seja verdadeiro. Se você selecionar os campos Metadados de gravação e
Use as opções de esquema de tópicos, o esquema do tópico deverá
não conter nenhum campo com nomes que correspondam aos dos parâmetros de metadados.
Essa limitação inclui versões em CamelCase desses parâmetros de caixa baixa.
Parâmetros | |
---|---|
subscription_name |
STRING Nome de uma assinatura. |
message_id |
STRING ID de uma mensagem |
publish_time |
TIMESTAMP O horário de publicação de uma mensagem. |
data |
BYTES, STRING ou JSON O corpo da mensagem. O campo |
attributes |
STRING ou JSON Um objeto JSON que contém todos os atributos de mensagem. Ele também contém outros campos que fazem parte da mensagem do Pub/Sub, incluindo a chave de ordenação, se presente. |
Criar uma assinatura do BigQuery
Os exemplos a seguir demonstram como criar uma assinatura com a entrega do BigQuery.
Console
- No console do Google Cloud, acesse a página Assinaturas.
- Clique em Criar assinatura.
- Insira um nome no campo ID da assinatura.
Para informações sobre como nomear uma inscrição, consulte Diretrizes para nomear um tópico ou uma assinatura.
- Escolha ou crie um tópico no menu suspenso. A assinatura recebe mensagens do tópico.
- Selecione Tipo de entrega como Gravar no BigQuery.
- Selecione o projeto da tabela do BigQuery.
- Selecione um conjunto de dados ou crie um novo.
Para saber como criar um conjunto de dados, consulte Como criar conjuntos de dados.
- Selecione uma tabela ou crie uma nova.
Para informações sobre como criar uma tabela, consulte Como criar tabelas.
- Recomendamos que você ative a opção morta
o uso de letras para lidar com falhas de mensagens.
Para mais informações, consulte Tópico de mensagens inativas.
- Clique em Criar.
Você também pode criar uma assinatura na página Tópicos. Esse atalho é útil para associar tópicos a assinaturas.
- No console do Google Cloud, acesse a página Topics página.
- Clique no more_vert ao lado do tópico desejado. para criar uma assinatura.
- No menu de contexto, selecione Criar assinatura.
- Selecione Tipo de entrega como Gravar no BigQuery.
- Selecione o projeto da tabela do BigQuery.
- Selecione um conjunto de dados ou crie um novo.
Para saber como criar um conjunto de dados, consulte Como criar conjuntos de dados.
- Selecione uma tabela ou crie uma nova.
Para informações sobre como criar um conjunto de dados, consulte Como criar tabelas.
- Recomendamos que você ative a opção morta
o uso de letras para lidar com falhas de mensagens.
Para mais informações, consulte Tópico de mensagens inativas.
- Clique em Criar.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
Para criar uma assinatura do Pub/Sub, use o comando
gcloud pubsub subscriptions create
:gcloud pubsub subscriptions create SUBSCRIPTION_ID \ --topic=TOPIC_ID \ --bigquery-table=PROJECT_ID:DATASET_ID.TABLE_ID
Substitua:
- SUBSCRIPTION_ID: especifica o ID do assinatura.
- TOPIC_ID: especifica o ID do tópico. O tópico exige um esquema.
- PROJECT_ID: especifica o ID do projeto.
- DATASET_ID: especifica o ID de um conjunto de dados existente. Para criar um conjunto de dados, consulte Criar conjuntos de dados.
- TABLE_ID: especifica o ID de uma tabela existente. A tabela precisa de um campo data se o tópico não tiver um esquema. Para criar uma tabela, consulte Criar uma tabela vazia com uma definição de esquema.
C++
Antes de testar esta amostra, siga as instruções de configuração do C++ no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C++.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub C#.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Go
Antes de testar este exemplo, siga as instruções de configuração do Go na Guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Go.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a API Java do Pub/Sub documentação de referência.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Node.js
Node.js
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no Guia de início rápido do Pub/Sub: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub PHP.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Python
Antes de testar este exemplo, siga as instruções de configuração do Python na Guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a API Python do Pub/Sub documentação de referência.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Ruby
Antes de testar este exemplo, siga as instruções de configuração do Ruby na Guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Pub/Sub Ruby.
Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
Monitorar uma assinatura do BigQuery
O Cloud Monitoring oferece várias métricas para monitorar assinaturas.
Para uma lista de todas as métricas disponíveis relacionadas ao Pub/Sub e as descrições deles, consulte Documentação de monitoramento do Pub/Sub.
Também é possível monitorar assinaturas no Pub/Sub.
A seguir
- Crie ou modifique uma assinatura com comandos
gcloud
. - Crie ou modifique uma assinatura com as APIs REST.
- Resolver problemas de uma assinatura do BigQuery.