Introdução a fontes de dados externas

Nesta página, você tem uma visão geral da consulta de dados armazenados fora do BigQuery.

Uma fonte de dados externa pode ser consultada diretamente no BigQuery, mesmo que os dados não estejam no armazenamento do BigQuery. Por exemplo, é possível ter dados em um banco de dados diferente do Google Cloud, em arquivos no Cloud Storage ou em um produto de nuvem diferente que você quer analisar no BigQuery, mas não está preparado para a migração.

Os casos de uso de fontes de dados externas incluem:

  • Para cargas de trabalho ELT (extrair-carregar-transformar), carregar e limpar os dados em uma única passagem e gravar o resultado limpo no armazenamento do BigQuery, usando uma consulta CREATE TABLE ... AS SELECT.
  • Como mesclar tabelas do BigQuery com dados alterados com frequência de uma fonte de dados externa. Ao consultar a fonte de dados externa diretamente, não é necessário recarregar os dados no armazenamento do BigQuery sempre que eles forem alterados.

O BigQuery tem dois mecanismos diferentes para consultar dados externos: tabelas externas e consultas federadas.

Tabelas externas

Essas tabelas são semelhantes às tabelas padrão do BigQuery, porque armazenam esses metadados e esquemas no armazenamento do BigQuery. No entanto, os dados ficam em uma fonte externa.

As tabelas externas estão contidas em um conjunto de dados, e você as gerencia da mesma forma que gerencia uma tabela padrão do BigQuery. Por exemplo, é possível ver as propriedades da tabela, definir controles de acesso e assim por diante. É possível consultar essas tabelas e, na maioria dos casos, mesclá-las com outras.

Há quatro tipos de tabelas externas:

  • Tabelas do BigLake
  • Tabelas do BigQuery Omni
  • Tabelas de objetos
  • Tabelas externas que não são do BigLake

Tabelas do BigLake

Com as tabelas do BigLake, é possível consultar dados estruturados em repositórios de dados externos com delegação de acesso. A delegação de acesso desacopla o acesso à tabela do BigLake ao acesso ao armazenamento de dados subjacente. Uma conexão externa associada a uma conta de serviço é usada para se conectar ao armazenamento de dados. Como a conta de serviço processa a recuperação de dados do armazenamento de dados, você só precisa conceder aos usuários acesso à tabela do BigLake. Isso permite aplicar segurança detalhada no nível da tabela, incluindo segurança no nível da linha e no nível da coluna. Nas tabelas do BigLake baseadas no Cloud Storage, também é possível usar o mascaramento de dados dinâmicos. Para saber mais sobre soluções de análise de várias nuvens usando tabelas do BigLake com dados do Amazon S3 ou do Blob Storage, consulte BigQuery Omni.

Para mais informações, consulte Introdução às tabelas do BigLake.

Tabelas de objetos

As tabelas de objetos permitem analisar dados não estruturados no Cloud Storage. É possível fazer análises com funções remotas ou inferência usando o BigQuery ML e, em seguida, mesclar os resultados dessas operações com o restante dos seus dados estruturados no BigQuery.

Assim como as tabelas do BigLake, as tabelas de objetos usam a delegação de acesso, o que desassocia o acesso à tabela do acesso aos objetos do Cloud Storage. Uma conexão externa associada a uma conta de serviço é usada para se conectar ao Cloud Storage. Portanto, você só precisa conceder aos usuários acesso à tabela de objetos. Isso permite que você aplique a segurança no nível da linha e gerencie a quais objetos os usuários têm acesso.

Para mais informações, consulte Introdução às tabelas de objetos.

Tabelas externas que não são do BigLake

As tabelas externas que não são do BigLake permitem consultar dados estruturados em armazenamentos de dados externos. Para consultar uma tabela externa que não seja do BigLake, você precisa ter permissões para a tabela externa e a fonte de dados externa. Por exemplo, para consultar uma tabela externa que não seja do BigLake e que use uma fonte de dados no Cloud Storage, é necessário ter as seguintes permissões:

  • bigquery.tables.getData
  • bigquery.jobs.create
  • storage.buckets.get
  • storage.objects.get

Para mais informações, consulte Introdução a tabelas externas.

Consultas federadas.

As consultas federadas permitem que você envie uma instrução de consulta para bancos de dados do AlloyDB, Spanner ou Cloud SQL e receba o resultado como uma tabela temporária. As consultas federadas usam a API BigQuery Connection para estabelecer uma conexão com o AlloyDB, Spanner ou o Cloud SQL. Na consulta, use a função EXTERNAL_QUERY para enviar uma instrução de consulta ao banco de dados externo usando o dialeto SQL desse banco de dados. Os resultados são convertidos em tipos de dados do GoogleSQL.

Para mais informações, consulte Introdução a consultas federadas.

Comparação de recursos da fonte de dados externa

A tabela a seguir compara o comportamento de fontes de dados externas:

Tabelas do BigLake Tabelas de objetos Tabelas externas que não são do BigLake Consultas federadas
Usa delegação de acesso Sim, com uma conta de serviço Sim, com uma conta de serviço No Sim, por meio de uma conta de usuário do banco de dados (somente Cloud SQL)
Pode ser baseado em vários URIs de origem Yes Yes Sim (somente no Cloud Storage) Não relevante
Mapeamento de linhas As linhas representam o conteúdo do arquivo As linhas representam metadados do arquivo As linhas representam o conteúdo do arquivo Não relevante
Acessível por outras ferramentas de processamento de dados usando conectores Sim (somente no Cloud Storage) Não Sim Não relevante
Pode ser mesclado a outras tabelas do BigQuery Sim (somente no Cloud Storage) Yes Sim Yes
Pode ser acessado como uma tabela temporária Sim (somente no Cloud Storage) Não Sim Yes
Funciona com o Amazon S3 Sim Não Não No
Funciona com o Azure Storage Sim Não Não Não
Funciona com o Bigtable Não Não Sim Não
Funciona com o Spanner Não Não Não Sim
Funciona com o Cloud SQL No Não Não Sim
Funciona com o Google Drive Não Não Sim No
Funciona com o Cloud Storage Sim Sim Sim Não

A seguir