Conectar-se ao SAP Datasphere

Como administrador do BigQuery, é possível criar uma conexão para acessar dados do SAP Datasphere. Essa conexão permite que os analistas de dados consultem dados no SAP Datasphere.

Antes de começar

  1. Ative a API BigQuery Connection.

    Ativar a API

  2. Crie um usuário de banco de dados do SAP Datasphere. Anote o nome de usuário, a senha, o nome do host e a porta para conexão do BigQuery.

  3. Configure o locatário do SAP Datasphere para aceitar tráfego dos endereços IP selecionados fazendo o seguinte:

    • Adicione todos os intervalos de endereços IP do Google à lista de permissões "IPs confiáveis" no SAP Datasphere.
    • Abra o locatário do SAP Datasphere para conexões de todos os endereços IP adicionando 0.0.0.0/0 à lista de permissões.
    • Configure sua conexão com anexos de rede para que o BigQuery abra a conexão de um endereço IP estático.

    Para mais informações sobre como configurar seu locatário do SAP Datasphere, consulte Adicionar o endereço IP à lista de permissões de IP.

Funções exigidas

Para receber as permissões necessárias para se conectar ao SAP Datasphere, peça ao administrador para conceder a você o papel do IAM de Administrador de conexão do BigQuery (roles/bigquery.connectionAdmin) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Conectar o BigQuery ao SAP Datasphere

É possível conectar o BigQuery ao SAP Datasphere no console do Google Cloud ou na ferramenta de linha de comando bq.

Console

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

    Ir para o BigQuery

  2. No painel Explorer, clique em Adicionar dados.

    A caixa de diálogo Adicionar dados é aberta.

  3. No painel Filtrar por, na seção Tipo de fonte de dados, selecione Bancos de dados.

    Como alternativa, no campo Pesquisar fontes de dados, insira SAP HANA.

  4. Na seção Fontes de dados em destaque, clique em SAP HANA.

  5. Clique no card da solução SAP HANA: BigQuery Federation.

  6. Na caixa de diálogo Fonte de dados externa, faça o seguinte:

    • Em Tipo de conexão, selecione SAP HANA.
    • Em ID da conexão, insira um ID para identificá-la.
    • Em Tipo de local, especifique uma região do conjunto de dados do BigQuery a ser combinada com os dados do SAP Datasphere. As consultas que usam essa conexão precisam ser executadas nessa região.
    • (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.
    • Em Criptografia, selecione Google-managed encryption key ou Chave de criptografia gerenciada pelo cliente (CMEK). O uso de uma CMEK é opcional.
    • Para Host:porta: insira o host e a porta da instância do banco de dados SAP, conforme mostrado no Detalhes do usuário do banco de dados no console da Web do SAP Datasphere, no formatoHOST:PORT ,
    • Opcional: em Anexo de rede, insira um caminho para o anexo de rede que define a configuração de rede usada para estabelecer uma conexão com o SAP Datasphere.
    • Em Nome de usuário: digite o nome de usuário do banco de dados em Detalhes do usuário do banco de dados no console da Web do SAP Datasphere. Por exemplo, MY_SPACE#BIGQUERY.
    • Em Senha: digite a senha do usuário do banco de dados.
  7. Clique em Criar conexão.

bq

Insira o comando bq mk com as seguintes sinalizações:

  bq mk \
  --connection \
  --location=LOCATION \
  --project_id=PROJECT_ID \
  --connector_configuration '{
    "connector_id": "saphana",
    "endpoint": {
      "host_port": "HOST_PORT"
    },
    "authentication": {
      "username_password": {
        "username": "USERNAME",
        "password": {
          "plaintext": "PASSWORD"
        }
      }
    },
    "network": {
      "private_service_connect": {
        "network_attachment": "NETWORK_ATTACHMENT"
      }
    }
  }' \
  CONNECTION_ID

Substitua:

  • LOCATION: especifica uma região do conjunto de dados do BigQuery a ser combinado com os dados do SAP Datasphere. As consultas que usam essa conexão precisam ser executadas nessa região.
  • PROJECT_ID: insira o ID do Google Cloud projeto.
  • HOST_PORT: insira o host e a porta da instância do banco de dados SAP, conforme mostrado em Database User Details no console da Web do SAP Datasphere, no formato HOST:PORT. ,
  • NETWORK_ATTACHMENT (opcional): insira o anexo de rede no formato projects/{project}/regions/{region}/networkAttachments/{networkattachment}. Com esse campo, você pode configurar a conexão do SAP Datasphere para que o BigQuery abra a conexão de um endereço IP estático.
  • USERNAME: insira o nome de usuário do banco de dados em Database User Details no console da Web do SAP Datasphere. Por exemplo, MY_SPACE#BIGQUERY.
  • PASSWORD: a senha do usuário do banco de dados.
  • CONNECTION_ID: insira um ID de conexão para identificar essa conexão.

Compartilhar conexões com os usuários

Você pode conceder os seguintes papéis para permitir que os usuários consultem dados e gerenciem conexões:

  • roles/bigquery.connectionUser: permite aos usuários usar conexões para se conectar a fontes de dados externas e executar consultas nelas.

  • roles/bigquery.connectionAdmin: permite que os usuários gerenciem conexões.

Para mais informações sobre os papéis e as permissões do IAM no BigQuery, consulte Papéis e permissões predefinidos.

Selecione uma das seguintes opções:

Console

  1. Acessar a página do BigQuery.

    Ir para o BigQuery

    As conexões são listadas no projeto, em um grupo chamado Conexões externas.

  2. No painel Explorer, clique no nome do seu projeto > Conexões externas > conexão.

  3. No painel Detalhes, clique em Compartilhar para compartilhar uma conexão. Em seguida, siga estas etapas:

    1. Na caixa de diálogo Permissões de conexão, compartilhe a conexão com outros principais adicionando ou editando principais.

    2. Clique em Salvar.

bq

Não é possível compartilhar uma conexão 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.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

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);
  }

  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");
    }
  }
}

A seguir