Consultar e analisar dados do Bigtable com o BigQuery
O BigQuery é um data warehouse gerenciado que pode ajudar você a consultar e analisar seus dados do Bigtable usando consultas SQL. O BigQuery é útil para analistas, engenheiros e cientistas de dados, ou qualquer pessoa que queira usar dados do Bigtable para responder a perguntas de negócios.
Com o BigQuery, é possível consultar seus dados do Bigtable no BigQuery. Esse recurso é útil quando você quer unir seus dados do Bigtable às tabelas do BigQuery.
Este documento fornece uma visão geral sobre a consulta de dados do Bigtable com o BigQuery. Antes de ler esta página, familiarize-se com a visão geral do Bigtable e a visão geral do BigQuery.
Usar o BigQuery para consultar uma tabela do Bigtable é ideal para tabelas que têm as mesmas famílias de colunas e qualificadores de coluna em todas as linhas.
Criação de tabelas externas
Antes de consultar os dados do Bigtable, você ou um administrador da sua organização precisa criar uma tabela externa, que é uma tabela do BigQuery com ponteiros de metadados para a tabela do Bigtable em que você envia as consultas. Para mais informações sobre tabelas externas, consulte Introdução às fontes de dados externas.
É preciso criar a tabela externa na mesma região da tabela do Bigtable. Por exemplo, se a tabela estiver em uma instância com clusters em europe-central2-a
(Varsóvia), europe-west1-c
(Bélgica) e asia-east1-a
(Tóquio), você precisará criar a tabela externa em Varsóvia, Bélgica ou Tóquio.
Configurações recomendadas
Recomendamos as seguintes práticas recomendadas ao criar sua tabela externa:
Para evitar afetar o tráfego de serviço do aplicativo, use a computação sem servidor do Data Boost ao ler dados do Bigtable com tabelas externas do BigQuery. Usar o Data Boost é especialmente econômico para consultas ad hoc. Para usar o Data Boost, especifique o perfil do app Data Boost ao criar a definição de tabela externa. Para mais informações sobre o Data Boost, consulte a visão geral do Data Boost do Bigtable.
Na maioria dos casos, ao criar uma tabela externa, defina
readRowkeyAsString
eignoreUnspecifiedColumnFamilies
como true.Quando
ignoreUnspecifiedColumnFamilies
é verdadeiro, ao criar uma definição de tabela que inclui apenas algumas colunas em um grupo de colunas, somente as colunas selecionadas são promovidas como colunas na tabela externa. Os dados nas colunas não selecionadas são agrupados em uma coluna geralcolumn
.
Para criar sua tabela externa, siga as instruções em Criar uma tabela externa do Bigtable.
Consultar dados na tabela externa
Depois de criar uma tabela externa para sua tabela do Bigtable, você pode enviar consultas SQL a ela usando um dos seguintes métodos:
- Na linha de comando usando
bq
, a CLI do BigQuery - Chamadas para a API BigQuery
- Qualquer uma das bibliotecas de cliente do BigQuery
Para saber como criar e executar uma consulta, consulte Executar uma consulta. Para instruções específicas do Bigtable, incluindo permissões obrigatórias e exemplos de código, consulte Consultar dados do Bigtable.
Consultas programadas
As consultas programadas são úteis quando você quer importar dados do Bigtable para o BigQuery de maneira recorrente. Eles também são úteis para casos de uso que, de outra forma, exigiriam a criação de um pipeline de dados e o streaming dos dados para o BigQuery. Para instruções sobre como gerenciar consultas programadas, consulte Como programar consultas.
Verificações completas de tabelas
Se você usar o Data Boost para ler seus dados, não será necessário evitar a verificação da tabela inteira. No entanto, se você usar nós provisionados para computação, isso vai acontecer. Assim como quando você envia solicitações de leitura diretamente para sua tabela do Bigtable, ao consultar a tabela externa para a tabela e não usar o Data Boost, geralmente é melhor evitar verificações completas da tabela. As varreduras de tabela completas aumentam o uso da CPU e levam muito mais tempo do que as consultas seletivas. Elas também exigem mais capacidade de processamento do BigQuery.
Se a consulta envolver todas as linhas, ela vai acionar uma verificação completa da tabela. Por outro lado, se você limitar a consulta e solicitar um intervalo de linhas ou linhas não contíguas especificadas, a tabela inteira não será verificada. Confira alguns exemplos de como limitar a consulta na sintaxe do GoogleSQL:
WHERE rowkey = "abc123"
WHERE rowkey BETWEEN "abc123" PRECEDING AND "abc999" FOLLOWING
WHERE rowkey > 999999
(se você ler a chave de linha como uma string)
Mesclagens
Se você planeja usar uma junção para analisar os dados da tabela do Bigtable em conjunto com dados de outra fonte, crie uma subconsulta que extraia os campos relevantes do Bigtable para a junção planejada. Para mais práticas recomendadas ao unir tabelas, consulte Otimizar a computação de consultas.
Custos
Ao criar e consultar uma tabela externa, você recebe cobranças pelos custos do BigQuery e por um aumento no número de nós do Bigtable necessários para processar o tráfego. Como a tabela externa está na mesma região da tabela do Bigtable, não há custos de rede.
Se você costuma executar consultas durante o horário comercial normal, considere ativar o escalonamento automático do Bigtable para que o número de nós aumente quando necessário e diminua quando os jobs forem concluídos. O escalonamento automático também é uma tática eficaz se você executa consultas programadas que não têm prazos definidos.
Outra maneira de limitar os custos é evitar uma verificação completa da tabela.
Para mais informações sobre otimização de custos no BigQuery, consulte Estimar e controlar custos.
Limitações
A seguinte limitação é válida:
- Os resultados de consultas que contêm dados serializados com tipos aninhados, como buffers de protocolo (protobufs) e formatos Avro, podem ser renderizados incorretamente ou ser difíceis de ler no console Google Cloud .
A seguir
- Saiba a diferença entre tabelas externas e consultas federadas.
- Crie uma tabela externa do Bigtable.
- Consulte dados do Bigtable armazenados em uma tabela externa.
- Exporte dados do BigQuery para o Bigtable.
- Criar um banco de dados de análise em tempo real com o Bigtable e o BigQuery