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 de dados, engenheiros de dados, cientistas de dados ou qualquer pessoa que queira usar dados do Bigtable para responder a perguntas de negócios.

O BigQuery permite consultar seus dados do Bigtable no BigQuery. Esse recurso é útil quando você quer mesclar seus dados do Bigtable com tabelas do BigQuery.

Este documento fornece uma visão geral da 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.

O uso do BigQuery para consultar uma tabela do Bigtable é ideal para tabelas que têm as mesmas famílias e qualificadores de coluna em cada linha.

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 que contém ponteiros de metadados para a tabela do Bigtable para onde você envia as consultas. Para mais informações sobre tabelas externas, consulte Introdução às fontes de dados externas.

É necessário criar a tabela externa na mesma região que a tabela Bigtable. Isso significa, por exemplo, que, se a tabela estiver em uma instância que tem 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, na Bélgica ou em Tóquio.

Na maioria dos casos, ao criar uma tabela externa, defina readRowkeyAsString e ignoreUnspecifiedColumnFamilies como verdadeiro.

Quando ignoreUnspecifiedColumnFamilies for verdadeiro, ao criar uma definição de tabela que inclua apenas algumas colunas em um grupo de colunas, apenas as colunas selecionadas serão promovidas como colunas na tabela externa. Os dados nas colunas não selecionadas são agrupados em uma coluna column geral.

Para criar uma tabela externa, siga as instruções em Criar uma tabela externa do Bigtable.

Consultar dados na tabela externa

Depois de ter uma tabela externa para a tabela do Bigtable, é possível enviar consultas SQL para ela usando um dos seguintes métodos:

Para saber como compor 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. Elas também são úteis para casos de uso que, de outra forma, exigiriam que você criasse um pipeline de dados e transmitisse os dados para o BigQuery. Para instruções sobre como gerenciar consultas programadas, consulte Como programar consultas.

Evite verificações de tabela completas

Assim como ao enviar solicitações de leitura diretamente para a tabela do Bigtable, ao consultar a tabela externa, geralmente é necessário evitar a verificação completa da tabela. As verificações de tabelas completas aumentam a utilização da CPU e levam consideravelmente 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 aciona 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 sintaxe do GoogleSQL para limitar a consulta:

  • 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 mesclagem 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 mesclagem planejada. Para conferir mais práticas recomendadas ao combinar tabelas, consulte Otimizar a computação de consultas.

Custos

Ao criar e consultar uma tabela externa, você vai receber cobranças pelos custos do BigQuery e pelo 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 que a tabela do Bigtable, não há custos de rede.

Se você costuma executar as consultas durante o horário comercial normal, ative 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ê executar consultas programadas que não têm prazos fixos.

Outra maneira de limitar os custos é evitar uma verificação completa da tabela.

Para mais informações sobre a otimização de custos do BigQuery, consulte Estimativa e controle de custos.

Limitações

Considere as seguintes limitações:

  • Não é possível usar o BigQuery para consultar dados do Bigtable armazenados no formato JSON.
  • Resultados de consulta que contêm dados serializados com tipos aninhados, como buffer de protocolo (protobufs) e formatos Avro, podem ser renderizados incorretamente ou ser difíceis de ler no console do Google Cloud.

A seguir