连接到 SAP Datasphere

作为 BigQuery 管理员,您可以创建一个连接来访问 SAP Datasphere 数据。借助此连接,数据分析师可以查询 SAP Datasphere 中的数据

准备工作

所需的角色

如需获得连接到 SAP Datasphere 所需的权限,请让您的管理员为您授予项目的 BigQuery Connection Admin (roles/bigquery.connectionAdmin) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

将 BigQuery 连接到 SAP Datasphere

您可以在 Google Cloud 控制台或 bq 命令行工具中将 BigQuery 连接到 SAP Datasphere。

控制台

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 探索器面板中,点击添加添加

  3. 在搜索字段中,搜索并选择与外部数据源的连接

  4. 外部数据源对话框中,执行以下操作:

    • 对于连接类型,选择 SAP HANA
    • 连接 ID 部分,输入连接 ID 以标识此连接。
    • 对于位置类型,指定要与 SAP Datasphere 中的数据组合的 BigQuery 数据集的区域。使用此连接的查询必须从此区域运行。
    • 可选:对于易记名称,输入方便用户使用的连接名称,例如 My connection resource。易记名称可以是任何容易辨识的值,让您以后在需要修改连接资源时能够轻松识别。
    • 可选:对于说明,输入此连接资源的说明。
    • 对于加密,选择 Google 管理的加密密钥客户管理的加密密钥 (CMEK)。我们并不强制要求使用 CMEK。
    • 对于 Host:port:输入 SAP 数据库实例的主机和端口,如 SAP Datasphere Web 控制台数据库用户详细信息中所示,格式为 HOST:PORT
    • 对于用户名:输入 SAP Datasphere Web 控制台数据库用户详细信息中的数据库用户名。例如 MY_SPACE#BIGQUERY
    • 对于密码:输入数据库用户的密码。
  5. 点击创建连接

bq

输入带有以下标志的 bq mk 命令:

  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

替换以下内容:

  • LOCATION:指定要与 SAP Datasphere 中的数据组合的 BigQuery 数据集的区域。使用此连接的查询必须从此区域运行。
  • PROJECT_ID:输入您的 Google Cloud 项目 ID。
  • HOST_PORT:输入 SAP 数据库实例的主机和端口,如 SAP Datasphere Web 控制台数据库用户详细信息中所示,格式为 HOST:PORT
  • USERNAME:输入 SAP Datasphere Web 控制台数据库用户详细信息中的数据库用户名。例如 MY_SPACE#BIGQUERY
  • PASSWORD:输入数据库用户的密码。
  • CONNECTION_ID:输入连接 ID 以标识此连接。

与用户共享连接

您可以授予以下角色,以使用户可以查询数据并管理连接:

  • roles/bigquery.connectionUser:允许用户使用连接与外部数据源建立连接,并对其运行查询。

  • roles/bigquery.connectionAdmin:允许用户管理连接。

如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅预定义的角色和权限

从下列选项中选择一项:

控制台

  1. 转到 BigQuery 页面。

    转到 BigQuery

    连接列在项目的外部连接组中。

  2. 探索器窗格中,点击您的项目名称 > 外部连接 > 连接

  3. 详细信息窗格中,点击共享以共享连接。之后,执行以下操作:

    1. 连接权限对话框中,通过添加或修改主账号与其他主账号共享连接。

    2. 点击保存

bq

您不能使用 bq 命令行工具共享连接。如需共享连接,请使用 Google Cloud 控制台或 BigQuery Connections API 方法共享连接。

API

使用 BigQuery Connections REST API 参考文档部分中的 projects.locations.connections.setIAM 方法,并提供一个 policy 资源实例。

Java

试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 Java 设置说明进行操作。如需了解详情,请参阅 BigQuery Java API 参考文档

如需向 BigQuery 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证

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:[email protected]")
              .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");
    }
  }
}

后续步骤