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:

Antes de começar

Ativar o serviço de conexão do BigQuery

  1. Abra a página da API BigQuery Connection na biblioteca de APIs.
  2. No menu suspenso, selecione o projeto que contém a fonte de dados externa.
  3. Clique no botão ATIVAR.

    API BigQuery Connection

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.

Permissões

  • Para criar e manter um recurso de conexão, o usuário precisa ter o papel do IAM predefinido bigquery.admin.

  • O papel bigquery.admin inclui as seguintes permissões do serviço de conexão do BigQuery:

    • bigquery.connections.create
    • bigquery.connections.get
    • bigquery.connections.list
    • bigquery.connections.update
    • bigquery.connections.use
    • bigquery.connections.delete

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

  1. Abra a página do IAM no Console do Cloud.

    Abrir a página do IAM

  2. Clique em Selecione um projeto.

  3. Selecione um projeto e clique em Abrir.

  4. Clique em Adicionar para incluir novos membros no projeto e defina as permissões deles.

  5. 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.

      Conceder papel de administrador

gcloud

É possível usar a ferramenta de linha de comando gcloud 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 group/user:address \
--role roles/bigquery.admin

Em que:

  • project_id é o ID do projeto;
  • group/user é group ou user.
  • 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.

Console

  1. Para criar um recurso de conexão, acesse a página do BigQuery no Console do Cloud.

    Acesse a página do BigQuery

  2. No menu Adicionar dados, selecione Fonte de dados externa.

    Criar recurso de conexão.

  3. 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.
    • 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, insira o nome de usuário para o banco de dados.
    • Em Senha, insira a senha do banco de dados.

      • (Opcional) Marque Mostrar senha para revelar a senha.

      Novo recurso de conexão

  4. 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âmetros instanceID, database e type.
  • CREDENTIALS: os parâmetros username e password.
  • 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 do BigQuery Connection, é possível invocar CreateConnection no ConnectionService para instanciar uma conexão. Consulte a página da biblioteca de cliente para mais detalhes.

Também é possível criar uma conexão usando as bibliotecas de cliente específicas da linguagem de programação. Consulte os tópicos dos tipos de conexão para ver exemplos específicos de cada linguagem.

Consultar um recurso de conexão

Depois de estabelecer uma conexão, use a função EXTERNAL_QUERY() para executar uma consulta federada. Consulte Sintaxe da consulta federada para mais informações e exemplos de consultas.

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 exigidas

Para receber informações sobre um recurso de conexão, é necessário ter a permissão bigquery.connections.get. Os seguintes papéis predefinidos de gerenciamento de identidade e acesso (IAM) já incluem a permissão bigquery.connections.get:

  • bigquery.admin
  • bigquery.connection.admin
  • bigquery.connection.user

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

  1. Para ver o status dos recursos de conexão, acesse a página do BigQuery no Console do Cloud.

    Ir para o BigQuery

  2. Os recursos de conexão serão listados no nível superior do projeto, em um grupo denominado Conexões externas. Clique em uma conexão para ver informações sobre esse recurso de conexão, como connection ID e Cloud SQL instance ID.

    Ver recursos 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.

import com.google.cloud.bigquery.connection.v1.Connection;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigquery.connection.v1.GetConnectionRequest;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to get connection
public class GetConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    getConnection(projectId, location, connectionId);
  }

  public static void getConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ConnectionName name = ConnectionName.of(projectId, location, connectionId);
      GetConnectionRequest request =
          GetConnectionRequest.newBuilder().setName(name.toString()).build();
      Connection response = client.getConnection(request);
      System.out.println("Connection info retrieved successfully :" + response.getName());
    }
  }
}

Listar todos os recursos de conexão

Permissões exigidas

Para listar todos os recursos de conexão em um projeto, é preciso ter as permissões bigquery.connections.list. Os seguintes papéis predefinidos do Cloud IAM já incluem a permissão bigquery.connections.list:

  • bigquery.admin
  • bigquery.connection.admin
  • bigquery.connection.user

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

  1. Para visualizar o status de um recurso de conexão, acesse a página do BigQuery no Console do Cloud.

    Ir para o BigQuery

  2. Os recursos de conexão serão listados no nível superior do projeto, em um grupo denominado Conexões externas.

    Ver recursos 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 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.

import com.google.cloud.bigquery.connection.v1.ListConnectionsRequest;
import com.google.cloud.bigquery.connection.v1.LocationName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to get list of connections
public class ListConnections {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    listConnections(projectId, location);
  }

  public static void listConnections(String projectId, String location) throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      LocationName parent = LocationName.of(projectId, location);
      int pageSize = 10;
      ListConnectionsRequest request =
          ListConnectionsRequest.newBuilder()
              .setParent(parent.toString())
              .setPageSize(pageSize)
              .build();
      client
          .listConnections(request)
          .iterateAll()
          .forEach(con -> System.out.println("Connection Id :" + con.getName()));
    }
  }
}

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.

Usuário de conexão do BigQuery

O papel bigquery.connection.user é voltado a usuários que precisam executar consultas com o recurso de conexão.

Esse papel do IAM inclui as permissões a seguir:

  • bigquery.connections.get
  • bigquery.connections.list
  • bigquery.connections.use
  • bigquery.connections.getIamPolicy

Administrador de conexão do BigQuery

O papel bigquery.connection.admin é destinado a usuários que precisam gerenciar recursos de conexão.

Esse papel do IAM inclui as mesmas permissões de bigquery.connection.user, além de outras permissões para criar, atualizar e excluir recursos de conexão existentes, bem como para definir a política do IAM em recursos de conexão.

  • bigquery.connections.create
  • bigquery.connections.update
  • bigquery.connections.setIamPolicy
  • bigquery.connections.delete

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

  1. Para compartilhar um recurso de conexão, acesse a página do BigQuery no Console do Cloud.

    Ir para o BigQuery

  2. Os recursos de conexão serão listados no nível superior do projeto, em um grupo denominado Conexões externas. Clique em uma conexão para ver informações sobre esse recurso de conexão.

    Ver recursos de conexão

  3. Clique no botão COMPARTILHAR CONEXÃO para ver o painel de permissões desse recurso de conexão.

    Botão "Compartilhar conexão"

  4. No painel 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 usuários. Para isso, precisam adicionar ou editar as permissões desses usuários.

    Compartilhar recursos de conexão

  5. Clique em Concluído.

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 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.

import com.google.api.resourcenames.ResourceName;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import com.google.iam.v1.SetIamPolicyRequest;
import java.io.IOException;

// Sample to share connections
public class ShareConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    shareConnection(projectId, location, connectionId);
  }

  public static void shareConnection(String projectId, String location, String connectionId)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ResourceName resource = ConnectionName.of(projectId, location, connectionId);
      Binding binding =
          Binding.newBuilder()
              .addMembers("group:example-analyst-group@google.com")
              .setRole("roles/bigquery.connectionUser")
              .build();
      Policy policy = Policy.newBuilder().addBindings(binding).build();
      SetIamPolicyRequest request =
          SetIamPolicyRequest.newBuilder()
              .setResource(resource.toString())
              .setPolicy(policy)
              .build();
      client.setIamPolicy(request);
      System.out.println("Connection shared successfully");
    }
  }
}

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 exigidas

A atualização de um recurso de conexão requer a permissão bigquery.connections.update.

Os seguintes papéis predefinidos do Cloud IAM já incluem a permissão bigquery.connections.update:

  • bigquery.admin
  • bigquery.connection.admin

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

  1. No Console do Cloud, acesse a página do BigQuery.

    Ir para o BigQuery

  2. Os recursos de conexão serão listados no nível superior do projeto, em um grupo denominado Conexões externas. Clique em uma conexão para ver informações sobre esse recurso de conexão.

    Ver recursos de conexão

  3. Clique no botão EDITAR CONEXÃO para ver o painel de edição do recurso de conexão.

    Botão "Editar conexão"

  4. Edite qualquer um dos campos exibidos, incluindo as credenciais do usuário.

    Editar recurso de conexão

  5. Clique em Salvar.

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.

import com.google.cloud.bigquery.connection.v1.Connection;
import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigquery.connection.v1.UpdateConnectionRequest;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import com.google.protobuf.FieldMask;
import com.google.protobuf.util.FieldMaskUtil;
import java.io.IOException;

// Sample to update connection
public class UpdateConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionId = "MY_CONNECTION_ID";
    String description = "MY_DESCRIPTION";
    Connection connection = Connection.newBuilder().setDescription(description).build();
    updateConnection(projectId, location, connectionId, connection);
  }

  public static void updateConnection(
      String projectId, String location, String connectionId, Connection connection)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ConnectionName name = ConnectionName.of(projectId, location, connectionId);
      FieldMask updateMask = FieldMaskUtil.fromString("description");
      UpdateConnectionRequest request =
          UpdateConnectionRequest.newBuilder()
              .setName(name.toString())
              .setConnection(connection)
              .setUpdateMask(updateMask)
              .build();
      Connection response = client.updateConnection(request);
      System.out.println("Connection updated successfully :" + response.getDescription());
    }
  }
}

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 exigidas

A exclusão de um recurso de conexão requer a permissão bigquery.connections.delete.

Os seguintes papéis predefinidos do Cloud IAM já incluem a permissão bigquery.connections.delete:

  • bigquery.admin
  • bigquery.connection.admin

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

  1. No Console do Google Cloud, acesse a página do BigQuery.

    Ir para o BigQuery

  2. Os recursos de conexão serão listados no nível superior do projeto, em um grupo denominado Conexões externas. Clique em uma conexão para ver informações sobre esse recurso de conexão.

    Ver recursos de conexão

  3. Clique no botão EXCLUIR CONEXÃO para ver o painel de exclusão desse recurso de conexão.

    Botão "Excluir conexão"

  4. Na caixa de diálogo Excluir conexão?, digite delete para confirmar sua intenção.

    Excluir recurso de conexão

  5. 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.

import com.google.cloud.bigquery.connection.v1.ConnectionName;
import com.google.cloud.bigquery.connection.v1.DeleteConnectionRequest;
import com.google.cloud.bigqueryconnection.v1.ConnectionServiceClient;
import java.io.IOException;

// Sample to delete a connection
public class DeleteConnection {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "MY_PROJECT_ID";
    String location = "MY_LOCATION";
    String connectionName = "MY_CONNECTION_NAME";
    deleteConnection(projectId, location, connectionName);
  }

  public static void deleteConnection(String projectId, String location, String connectionName)
      throws IOException {
    try (ConnectionServiceClient client = ConnectionServiceClient.create()) {
      ConnectionName name = ConnectionName.of(projectId, location, connectionName);
      DeleteConnectionRequest request =
          DeleteConnectionRequest.newBuilder().setName(name.toString()).build();
      client.deleteConnection(request);
      System.out.println("Connection deleted successfully");
    }
  }
}

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 e EU no mesma área geográfica compatível com a região da fonte de dados. Consulte Regiões compatíveis para mais informações sobre regiões e compatibilidade de regiões.
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