Conectarse a SAP Datasphere

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

Antes de empezar

  1. Habilita la API de conexión de BigQuery.

    Activar la API

  2. Crea un usuario de la base de datos de SAP Datasphere. Anota el nombre de usuario, la contraseña, el nombre de host y el puerto de BigQuery para conectarte.

  3. Configura tu arrendatario de SAP Datasphere para que acepte el tráfico de las direcciones IP seleccionadas de una de las siguientes formas:

    • Añade todos los intervalos de direcciones IP de Google a la lista de permitidos "IPs de confianza" de SAP Datasphere.
    • Abre el tenant de SAP Datasphere a las conexiones de todas las direcciones IP añadiendo 0.0.0.0/0 a la lista de permitidas.
    • Configura tu conexión con archivos adjuntos de red para que BigQuery abra la conexión desde una dirección IP estática.

    Para obtener más información sobre cómo configurar tu arrendatario de SAP Datasphere, consulta Añadir una dirección IP a la lista de permitidas de IPs.

Roles obligatorios

Para obtener los permisos que necesitas para conectarte a SAP Datasphere, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de conexiones de BigQuery (roles/bigquery.connectionAdmin) en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Conectar BigQuery con SAP Datasphere

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

Consola

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

    Ir a BigQuery

  2. En el panel Explorador, haz clic en Añadir datos.

    Se abrirá el cuadro de diálogo Añadir datos.

  3. En el panel Filtrar por, en la sección Tipo de fuente de datos, selecciona Bases de datos.

    También puede introducir SAP HANA en el campo Buscar fuentes de datos.

  4. En la sección Fuentes de datos destacadas, haga clic en SAP HANA.

  5. Haga clic en la tarjeta de solución SAP HANA: federación de BigQuery.

  6. En el cuadro de diálogo Fuente de datos externa, haga lo siguiente:

    • En Tipo de conexión, selecciona SAP HANA.
    • En Connection ID (ID de conexión), introduce un ID 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 usen esta conexión deben ejecutarse desde esta región.
    • Opcional: En Nombre descriptivo, introduce un nombre descriptivo para la conexión, como My connection resource. El nombre descriptivo puede ser cualquier valor que te ayude a identificar el recurso de conexión si necesitas modificarlo más adelante.
    • Opcional: En Descripción, escribe una descripción de este recurso de conexión.
    • En Encriptado, selecciona Google-managed encryption key o Clave de cifrado gestionada por el cliente (CMEK). El uso de una CMEK es opcional.
    • En Host:port (Host: puerto), introduce el host y el puerto de la instancia de la base de datos de SAP, tal como se muestra en Database User Details (Detalles del usuario de la base de datos) en la consola web de SAP Datasphere, con el formato HOST:PORT.
    • Opcional: En Adjunto de red, introduce la ruta al adjunto de red que define la configuración de red que se usa para establecer una conexión con SAP Datasphere.
    • En Nombre de usuario, introduce 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, introduce la contraseña del usuario de la base de datos.
  7. Haga clic en Crear conexión.

bq

Introduce 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"
        }
      }
    },
    "network": {
      "private_service_connect": {
        "network_attachment": "NETWORK_ATTACHMENT"
      }
    }
  }' \
  CONNECTION_ID

Haz los cambios siguientes:

  • LOCATION: especifica una región del conjunto de datos de BigQuery que se combinará con los datos de SAP Datasphere. Las consultas que usen esta conexión deben ejecutarse desde esta región.
  • PROJECT_ID: introduce tu Google Cloud ID de proyecto.
  • HOST_PORT: introduce el host y el puerto de la instancia de la base de datos de SAP, tal como se muestra en Detalles del usuario de la base de datos de la consola web de SAP Datasphere, en el formato HOST:PORT.
  • NETWORK_ATTACHMENT (opcional): introduce el archivo adjunto de red con el formato projects/{project}/regions/{region}/networkAttachments/{networkattachment}. Con este campo, puedes configurar la conexión de SAP Datasphere para que BigQuery abra la conexión desde una dirección IP estática.
  • USERNAME: introduce 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.
  • PASSWORD: introduce la contraseña del usuario de la base de datos.
  • CONNECTION_ID: introduce un ID de conexión para identificar esta conexión.

Compartir conexiones con usuarios

Puede conceder los siguientes roles para permitir que los usuarios consulten datos y gestionen conexiones:

  • roles/bigquery.connectionUser: permite a los usuarios usar conexiones para conectarse con fuentes de datos externas y ejecutar consultas en ellas.

  • roles/bigquery.connectionAdmin: permite a los usuarios gestionar las conexiones.

Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.

Selecciona una de las opciones siguientes:

Consola

  1. Ve a la página BigQuery.

    Ir a BigQuery

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

  2. En el panel Explorador, haga clic en el nombre del proyecto > Conexiones externas > conexión.

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

    1. En el cuadro de diálogo Permisos de conexión, comparte la conexión con otras entidades principales añadiendo o editando entidades principales.

    2. Haz clic en Guardar.

bq

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

API

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

Java

Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación 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");
    }
  }
}

Siguientes pasos