Trabalhar com conexões para fontes de dados externas
Visão geral
Com a API BigQuery Connection, os usuários podem configurar uma conexão do BigQuery com uma fonte de dados externa. Use a conexão para enviar consultas à fonte de dados externa do BigQuery sem mover ou copiar dados para o BigQuery.
Você precisa concluir uma configuração inicial única para criar um recurso de conexão no BigQueryBigQuery. Depois disso, será possível executar as seguintes tarefas:
- Consultar um recurso de conexão ao escrever uma consulta
com a função SQL
EXTERNAL_QUERY
- Configurar as conexões de banco de dados do Cloud SQL
- Configurar conexões de banco de dados do Cloud Spanner
- Crie a conexão da AWS com o BigQuery
Antes de começar
Antes de trabalhar com um recurso de conexão, execute as tarefas explicadas nas seções a seguir.
Ativar o serviço de conexão do BigQuery
- Abra a página da API BigQuery Connection na biblioteca de APIs.
- No menu suspenso, selecione o projeto que contém a fonte de dados externa.
Clique no botão ATIVAR.
Conta de serviço
O BigQuery usa uma conta de serviço para se conectar à sua fonte de dados externa. Quando você ativa a API BigQuery Connection, uma conta de serviço de gerenciamento de identidade e acesso (IAM) gerenciada pelo Google Cloud é criada automaticamente em seu nome.
Para ver uma lista de contas de serviço no projeto, consulte Como listar contas de serviço.
Permissões necessárias
Para criar e manter um recurso de conexão, você precisa das seguintes permissões do IAM:
bigquery.connections.create
bigquery.connections.get
bigquery.connections.list
bigquery.connections.update
bigquery.connections.use
bigquery.connections.delete
O papel predefinido roles/bigquery.admin
do IAM inclui as
permissões necessárias para criar e manter um recurso de conexão.
Para conceder permissões a outro usuário para que ele possa usar o recurso de conexão, consulte Compartilhar um recurso de conexão.
Como conceder acesso bigquery.admin
Para conceder o papel bigquery.admin
:
Console
Abra a página "IAM" no console do Google Cloud
Clique em Selecione um projeto.
Selecione um projeto e clique em Abrir.
Clique em Adicionar para incluir novos membros no projeto e defina as permissões deles.
Na caixa de diálogo Adicionar membros:
- Em Membros, insira o endereço de e-mail do usuário ou grupo.
- Na lista suspensa Selecionar um papel, clique em BigQuery > Administrador do BigQuery.
Clique em Adicionar.
gcloud
Use a CLI do Google Cloud para conceder a um usuário ou grupo o
papel bigquery.admin
.
Para adicionar uma única vinculação à política do IAM do projeto,
digite o comando a seguir. Para incluir um usuário, forneça a sinalização --member
no
formato user:user@example.com
. Para incluir um grupo, forneça a sinalização --member
no formato group:group@example.com
.
gcloud projects add-iam-policy-binding project_id \ --member principal:address \ --role roles/bigquery.admin
Em que:
- project_id é o ID do projeto;
- principal é
group
ouuser
. - address é o endereço de e-mail do usuário ou do grupo.
Por exemplo:
gcloud projects add-iam-policy-binding myproject \
--member group:group@example.com \
--role roles/bigquery.admin
A política atualizada é exibida:
bindings: - members: - group:group@example.com role: roles/bigquery.admin
Para mais informações sobre os papéis do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Criar um recurso de conexão
Para evitar a gravação de credenciais de banco de dados como texto simples (em inglês) em uma consulta federada, é necessário primeiro criar um recurso de conexão de banco de dados por banco de dados no BigQuery e, em seguida, referenciar o recurso de conexão na consulta federada.
O recurso de conexão tem um conjunto de permissões do IAM, que pode ser concedido a outros usuários. Esse recurso é criptografado e armazenado com segurança no serviço de conexão do BigQuery e só pode ser usado para consultas federadas. Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
É possível configurar um recurso de conexão para Cloud SQL, Cloud Spanner e AWS (via BigQuery Omni). Para criar um recurso de conexão do Cloud SQL, siga estas etapas:
Console
Para criar um recurso de conexão, acesse a página do BigQuery no console do Google Cloud.
No menu
Adicionar dados, selecione Fonte de dados externa.No painel Fonte de dados externa, insira as seguintes informações:
- Em Tipo de conexão, selecione o tipo de origem, por exemplo, MySQL ou Postgres.
- Em ID da conexão, insira um identificador para o recurso de conexão. Letras, números e sublinhados são permitidos. Por exemplo,
bq_sql_connection
. - Em Local da conexão, selecione um local (ou região) do BigQuery compatível com a região da fonte de dados externa.
- (Opcional) Em Nome amigável, insira um nome fácil de usar para
a conexão, como
My connection resource
. O nome amigável pode ser qualquer valor que ajude você a identificar o recurso de conexão se precisar modificá-lo mais tarde. - (Opcional) Em Descrição, insira uma descrição para este recurso de conexão.
- Se você escolheu MySQL ou Postgres do Cloud SQL para o tipo de conexão, em ID da instância do Cloud SQL, digite o nome da instância do Cloud SQL, geralmente no formato
project-id:location-id:instance-id
. Encontre o ID da instância na página de detalhes da instância do Cloud SQL que você quer consultar. - Em Nome do banco de dados, insira o nome do banco de dados.
- Em Nome de Usuário do banco de dados, insira o nome de usuário para o banco de dados.
Em Senha do banco de dados, insira a senha do banco de dados.
- Opcional: para ver a senha, clique em Mostrar senha.
Clique em Criar conexão.
bq
Insira o comando bq mk
e forneça a sinalização de conexão:
--connection
. As sinalizações abaixo também são obrigatórias:
--connection_type
--properties
--connection_credential
--project_id
--location
As sinalizações a seguir são opcionais:
--display_name
O nome amigável da conexão.--description
Uma descrição da conexão.
O connection_id
é um parâmetro opcional que pode ser adicionado como o último argumento do comando
usado internamente para armazenamento. Se um ID de conexão não for fornecido, um ID exclusivo será gerado automaticamente.
O connection_id
pode conter letras, números e sublinhados.
bq mk --connection --display_name='friendly name' --connection_type=TYPE \
--properties=PROPERTIES --connection_credential=CREDENTIALS \
--project_id=PROJECT_ID --location=LOCATION \
CONNECTION_ID
Substitua:
TYPE
: o tipo da fonte de dados externa.PROPERTIES
: os parâmetros da conexão criada no formato JSON. Por exemplo,--properties='{"param":"param_value"}'
. Para criar um recurso de conexão, é necessário fornecer os parâmetrosinstanceID
,database
etype
.CREDENTIALS
: os parâmetrosusername
epassword
.PROJECT_ID
: o ID do projeto;LOCATION
: a região em que a instância do Cloud SQL está localizada.CONNECTION_ID
: o identificador de conexão.
Por exemplo, o comando abaixo cria um novo recurso de conexão chamado my_new_connection (nome amigável: "Minha nova conexão") em um projeto com o ID federation-test
.
bq mk --connection --display_name='friendly name' --connection_type='CLOUD_SQL' \
--properties='{"instanceId":"federation-test:us-central1:mytestsql","database":"mydatabase","type":"MYSQL"}' \
--connection_credential='{"username":"myusername", "password":"mypassword"}' \
--project_id=federation-test --location=us my_connection_id
API
Na API BigQuery Connection, é possível invocar CreateConnection
no ConnectionService
para instanciar uma conexão. Para mais informações,
consulte as bibliotecas de cliente da API BigQuery Connection.
Consultar um recurso de conexão
Depois de estabelecer uma conexão, use a função
EXTERNAL_QUERY
para executar uma consulta federada.
Consultar outro banco de dados por meio do mesmo recurso de conexão
Ao criar uma conexão com uma fonte de dados externa, você especifica credenciais para essa fonte de dados. Se as mesmas credenciais de usuário forem válidas para outros dados na origem, o mesmo recurso de conexão poderá ser usado.
Receber informações sobre um recurso de conexão
Depois de criar um recurso de conexão, será possível receber informações sobre a configuração do recurso de conexão. A configuração inclui os valores que você forneceu quando criou a transferência.
Permissões necessárias
Para ver informações sobre um recurso de conexão, é preciso ter a permissão do IAM bigquery.connections.get
.
Cada um dos papéis do IAM predefinidos a seguir inclui as permissões necessárias para conseguir informações sobre um recurso de conexão:
roles/bigquery.admin
roles/bigquery.connectionAdmin
roles/bigquery.connectionUser
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Como visualizar um recurso de conexão
Console
Para ver o status dos recursos de conexão, acesse a página do BigQuery no console do Google Cloud.
Os recursos de conexão estão listados no projeto, em um grupo chamado Conexões externas.
No painel Explorer clique no nome do projeto > Conexões externas > um recurso de conexão para ver informações sobre um recurso de conexão.
bq
Insira o comando bq show
e forneça a sinalização
de conexão: --connection
. O connection_id totalmente qualificado é obrigatório.
bq show --connection project.location.connection_id
Por exemplo, o comando a seguir recebe informações sobre um recurso de conexão chamado my_new_connection
em um projeto com o ID federation-test
localizado na região us
.
bq show --connection federation-test.us.my_new_connection
API
Use o
método projects.locations.connections.get
na seção de referência da API REST.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Listar todos os recursos de conexão
Permissões necessárias
Para listar todos os recursos de conexão em um projeto, você precisa da permissão do IAM bigquery.connections.list
.
Cada um dos papéis predefinidos do IAM a seguir inclui as permissões necessárias para listar todos os recursos de conexão:
roles/bigquery.admin
roles/bigquery.connectionAdmin
roles/bigquery.connectionUser
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Como listar recursos de conexão
Para listar todos os recursos de conexão em um projeto:
Console
Para visualizar o status de um recurso de conexão, acesse a página do BigQuery no console do Google Cloud.
Os recursos de conexão estão listados no projeto, em um grupo chamado Conexões externas.
No painel Explorer, clique no nome do seu projeto > Conexões externas para ver uma lista de todas os recursos de conexões.
bq
Insira o comando bq show
e forneça a sinalização
de conexão: --connection
. O connection_id
totalmente qualificado é obrigatório.
bq ls --connection --project_id=[project_id] --location=[location]
Por exemplo, o comando a seguir lista os recursos de conexão em um projeto com o ID federation-test
localizado na região us
.
bq ls --connection --project_id=bigquery-federation-test --location=us
API
Use o método projects.locations.connections.list
na seção de referência da API REST.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Compartilhar um recurso de conexão
Permissões necessárias
Para permitir que outro usuário utilize um recurso de conexão para consultas
federadas do Cloud SQL, o usuário bigquery.admin
pode conceder os dois
papéis diferentes no IAM:
roles/bigquery.connectionUser
O usuário do BigQuery Connection pode executar consultas com o recurso de conexão.
Para executar consultas com o recurso de conexão, você precisa das seguintes permissões do IAM:
bigquery.connections.get
bigquery.connections.list
bigquery.connections.use
bigquery.connections.getIamPolicy
O papel predefinido
roles/bigquery.connectionUser
do IAM inclui as permissões necessárias para executar consultas com o recurso de conexão.roles/bigquery.connectionAdmin
O administrador de conexões do BigQuery pode gerenciar os recursos de conexão. Além das permissões incluídas no papel de usuário da conexão do BigQuery, esse papel inclui permissões para criar, atualizar e excluir os recursos de conexão, bem como para definir a política de IAM nos recursos de conexão.
Para gerenciar os recursos de conexão, você precisa das seguintes permissões do IAM:
bigquery.connections.get
bigquery.connections.list
bigquery.connections.use
bigquery.connections.getIamPolicy
bigquery.connections.create
bigquery.connections.update
bigquery.connections.setIamPolicy
bigquery.connections.delete
O papel predefinido do IAM
roles/bigquery.connectionAdmin
inclui as permissões necessárias para gerenciar os recursos de conexão.Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Como compartilhar um recurso de conexão
Console
Para compartilhar um recurso de conexão, acesse a página do BigQuery no console do Google Cloud.
Os recursos de conexão estão listados no projeto, em um grupo chamado Conexões externas.
No painel Explorer clique no nome do projeto > Conexões externas > um recurso de conexão para ver os detalhes da conexão.
No painel Detalhes, clique em Compartilhar para compartilhar um recurso de conexão. Em seguida, faça o seguinte:
Na caixa de diálogo Permissões de conexão, os usuários com o papel Administrador do BigQuery ou Administrador de conexão do BigQuery podem compartilhar o recurso de conexão com outros principais por meio da adição ou edição de principais.
Clique em Save.
bq
Atualmente, não é possível compartilhar um recurso com a ferramenta de linha de comando bq
.
Para compartilhar um recurso de conexão, use o console do Google Cloud ou
o método da API BigQuery Connections para compartilhar uma conexão.
API
Consulte o
método projects.locations.connections.setIAM
na seção de referência da API REST BigQuery Connections e
forneça uma instância do recurso policy
.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Editar ou atualizar um recurso de conexão
Depois de adicionar o recurso de conexão, é possível editá-lo. É possível editar a maioria dos campos preenchidos durante a criação do recurso de conexão, incluindo as credenciais de nome de usuário.
Uma conexão usa as credenciais do usuário que a criou. Se você precisar alterar o usuário vinculado a um recurso de conexão, atualize as credenciais dele. Isso será útil se o usuário que criou a conexão não estiver mais em sua organização.
Não é possível editar os seguintes elementos de um recurso de conexão:
- Tipo de conexão
- ID da conexão
- Local
Permissões necessárias
Para atualizar um recurso de conexão, é necessário ter a
permissão do IAM bigquery.connections.update
.
Cada um dos papéis predefinidos do IAM a seguir inclui as permissões necessárias para atualizar um recurso de conexão:
roles/bigquery.admin
roles/bigquery.connectionAdmin
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Como editar um recurso de conexão
Para editar uma conexão:
Console
No Console do Google Cloud, acesse a página do BigQuery.
Os recursos de conexão estão listados no projeto, em um grupo chamado Conexões externas.
No painel Explorer clique no nome do projeto > Conexões externas > um recurso de conexão para ver os detalhes da conexão.
No painel Detalhes, clique em
Editar detalhes para editar os detalhes. Em seguida, faça o seguinte:Na caixa de diálogo Editar conexão, edite os detalhes da conexão, incluindo as credenciais do usuário.
Clique em Atualizar conexão.
bq
Insira o comando bq update
e forneça a sinalização
de conexão: --connection
. O connection_id
totalmente qualificado é obrigatório.
bq update --connection --connection_type='CLOUD_SQL'
--properties='{"instanceId" : "instance",
"database" : "db", "type" : "MYSQL" }'
--connection_credential='{"username":"u", "password":"p"}'
project.location.connection_id
Por exemplo, o comando a seguir atualiza os recursos de conexão em um projeto com o ID federation-test
e o ID de conexão test-mysql
.
bq update --connection --connection_type='CLOUD_SQL'
--properties='{"instanceId" : "federation-test:us-central1:new-mysql",
"database" : "imdb2", "type" : "MYSQL" }'
--connection_credential='{"username":"my_username",
"password":"my_password"}' federation-test.us.test-mysql
API
Consulte o
método projects.locations.connections.patch
na seção de referência da API REST e forneça uma instância
do recurso connection
.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Excluir um recurso de conexão
É possível excluir um recurso de conexão se tiver as permissões corretas para fazer isso.
Permissões necessárias
Para excluir um recurso de conexão, é preciso ter a permissão do IAM bigquery.connections.delete
.
Cada um dos papéis predefinidos do IAM a seguir inclui as permissões necessárias para excluir um recurso de conexão:
roles/bigquery.admin
roles/bigquery.connectionAdmin
Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.
Como excluir um recurso de conexão
Para excluir uma conexão:
Console
No Console do Google Cloud, acesse a página do BigQuery.
Os recursos de conexão estão listados no projeto, em um grupo chamado Conexões externas.
No painel Explorer clique no nome do projeto > Conexões externas > um recurso de conexão para ver os detalhes da conexão.
No painel Detalhes, clique em
Excluir para excluir o recurso de conexão.Na caixa de diálogo Excluir conexão?, digite
delete
para confirmar a exclusão.Clique em Excluir.
bq
Insira o comando bq rm
e forneça a sinalização
de conexão: --connection
. O connection_id
totalmente qualificado é obrigatório.
bq rm --connection project.location.connection_id
Por exemplo, o comando a seguir atualiza os recursos de conexão em um projeto com o ID federation-test
e o ID de conexão test-mysql
.
bq rm --connection federation-test.us.test-mysql
API
Consulte o
método projects.locations.connections.delete
na seção de referência da API REST.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido do BigQuery: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API BigQuery em Java.
Registro de auditoria
Para registros de auditoria de recursos de conexão, consulte Visão geral dos registros de auditoria do BigQuery.
Solução de problemas
Esta seção resolve problemas que podem ocorrer durante a configuração de uma nova conexão. Neste documento, não englobamos todas as mensagens de erro ou problemas possíveis.
Ao fazer o diagnóstico de problemas gerais de conexão, verifique os itens a seguir:
- Você concluiu todas as etapas na seção Antes de começar.
- As propriedades de configuração da conexão estão corretas.
- Você tem as permissões apropriadas para criar uma conexão.
Se as propriedades da conexão estiverem corretas e as permissões apropriadas forem concedidas, consulte as seguintes soluções para problemas comuns.
- Problema: o BigQuery e a fonte de dados externa não estão localizados.
- Resolução: a consulta federada é aceita apenas em regiões compatíveis com o BigQuery e a fonte de dados externa. O conjunto de dados do BigQuery e a instância da fonte de dados precisam estar na mesma região ou em um local multirregional, como
US
eEU
no mesma área geográfica compatível com a região da fonte de dados. Para ver informações sobre regiões e compatibilidade com regiões, consulte Regiões compatíveis. - Problema: o desempenho está mais lento que o esperado.
- Resolução: o desempenho das consultas federadas não é tão bom quanto consultar dados armazenados no BigQuery, porque a consulta federada precisa consultar externamente a fonte de dados, retornar os dados a uma tabela temporária do BigQuery, mapear os dados para o tipo de dados do BigQuery e executar a consulta no BigQuery. Embora o desempenho da consulta não seja tão alto, os dados não precisam ser copiados, movidos ou armazenados novamente.
- Problema: como formatar o nome da conexão.
- Resolução: o nome da conexão precisa incluir projeto, local e código da conexão. O código de conexão precisa estar em conformidade com este padrão:
project_id.location_id.connection_id
, por exemplo,federation-test.us.my_new_connection