Conéctate a SAP Datasphere

Como administrador de BigQuery, puedes crear una conexión para acceder a los datos de SAP Datasphere. Esta conexión permite que los analistas de datos consulten datos en SAP Datasphere.

Antes de comenzar

Funciones obligatorias

Para obtener los permisos que necesitas para conectarte a SAP Datasphere, solicita a tu administrador que te otorgue el rol de IAM Administrador de conexión de BigQuery (roles/bigquery.connectionAdmin) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Conecta BigQuery a SAP Datasphere

Puedes conectar BigQuery a SAP Datasphere en la consola de Google Cloud o la herramienta de línea de comandos de bq.

Console

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, haz clic en agregar Agregar.

  3. En el campo de búsqueda, busca y selecciona Conexiones a fuentes de datos externas.

  4. En el cuadro de diálogo Fuente de datos externa, haz lo siguiente:

    • En Tipo de conexión, selecciona SAP HANA.
    • En ID de conexión, ingresa un ID de conexión para identificar esta conexión.
    • En Tipo de ubicación, especifica una región del conjunto de datos de BigQuery que se combinará con los datos de SAP Datasphere. Las consultas que usan esta conexión deben ejecutarse desde esta región.
    • En Nombre descriptivo, ingresa un nombre fácil de usar para la conexión, como My connection resource (opcional). El nombre descriptivo puede ser cualquier valor que te ayude a identificar el recurso de conexión si necesitas modificarlo más adelante.
    • En Descripción, ingresa una descripción para este recurso de conexión (opcional).
    • En Encriptación, selecciona Clave de encriptación administrada por Google o Clave de encriptación administrada por el cliente (CMEK). El uso de una CMEK es opcional.
    • Para Host:port: Ingresa el host y el puerto de la instancia de base de datos de SAP, como se muestra en Detalles del usuario de la base de datos en la consola web de SAP Datasphere, en el formato HOST:PORT.
    • En Nombre de usuario, ingresa el nombre de usuario de la base de datos de Detalles del usuario de la base de datos en la consola web de SAP Datasphere. Por ejemplo, MY_SPACE#BIGQUERY.
    • En Contraseña: ingresa la contraseña del usuario de la base de datos.
  5. Haz clic en Crear conexión.

bq

Ingresa el comando bq mk con las siguientes marcas:

  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"
        }
      }
    }
  }' \
  CONNECTION_ID

Reemplaza lo siguiente:

  • LOCATION: especifica una región del conjunto de datos de BigQuery que se combinará con los datos de SAP Datasphere. Las consultas que usan esta conexión deben ejecutarse desde esta región.
  • PROJECT_ID: ingresa el ID del proyecto de Google Cloud.
  • HOST_PORT: ingresa el host y el puerto de la instancia de base de datos de SAP, como se muestra en Detalles del usuario de la base de datos en la consola web de SAP Datasphere, en el formato HOST:PORT.
  • USERNAME: Ingresa el nombre de usuario de la base de datos Detalles del usuario de Database en la consola web de SAP Datasphere. Por ejemplo, MY_SPACE#BIGQUERY.
  • PASSWORD: Ingresa la contraseña del usuario de la base de datos.
  • CONNECTION_ID: ingresa un ID de conexión para identificar esta conexión.

Comparte conexiones con usuarios

Puedes otorgar los siguientes roles para permitir que los usuarios consulten datos y administren conexiones:

  • roles/bigquery.connectionUser: Permite que los usuarios usen conexiones para conectarse con fuentes de datos externas y ejecutar consultas en ellas.

  • roles/bigquery.connectionAdmin: Permite que los usuarios administren conexiones.

Para obtener más información sobre los roles y los permisos de IAM en BigQuery, consulta Roles y permisos predefinidos.

Selecciona una de las opciones siguientes:

Console

  1. Ve a la página de BigQuery.

    Ir a BigQuery

    Las conexiones se enumeran en tu proyecto, en un grupo llamado Conexiones externas.

  2. En el panel Explorador, haz clic en el nombre de tu proyecto > Conexiones externas > conexión.

  3. En el panel Detalles, haz clic en Compartir para compartir una conexión. A continuación, sigue estos pasos:

    1. En el cuadro de diálogo Permisos de conexión, agrega o edita las principales para compartir la conexión con otros principales.

    2. Haz clic en Guardar.

bq

No puedes compartir una conexión con la herramienta de línea de comandos de bq. Para compartir una conexión, usa la consola de Google Cloud o el método de la API de conexiones de BigQuery.

API

Consulta el método projects.locations.connections.setIAM en la sección de referencia de la API de REST de las conexiones de BigQuery y proporciona una instancia del recurso policy.

Java

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas 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");
    }
  }
}

¿Qué sigue?