使用 Data Boost 运行联合查询

本页介绍了在从 BigQuery 向 Spanner 运行联合查询时如何使用 Spanner Data Boost。借助数据提升 联合查询在运行,对 预配的 Spanner 实例。

借助 Spanner 联合,BigQuery 能够实时查询驻留在 Spanner 中的数据,而无需复制或移动数据。

如需了解 Spanner 联合查询,请参阅 Spanner 联合查询

如需了解 Data Boost,请参阅 Data Boost 概览

准备工作

尝试使用 流量提升。

启用 BigQuery Connection API

借助 BigQuery Connection API,您可以 与外部数据源的 BigQuery 连接。

  • Enable the BigQuery connection API.

    Enable the API

如需了解详情,请参阅 BigQuery Connection API

向主账号授予 Data Boost 的 IAM 权限

主账号需要拥有 spanner.instances.getspanner.databases.useDataBoost Identity and Access Management (IAM) 权限,才能使用 Data Boost 运行查询和导出数据。

我们建议您根据上述说明创建自定义 IAM 角色, Spanner Database Reader (roles/spanner.databaseReader) 并添加 spanner.instances.getspanner.databases.useDataBoost

如需了解详情,请参阅预定义角色

使用 Data Boost 为 Spanner 创建 BigQuery 连接

借助 BigQuery 连接,您可以查询存储在 BigQuery 之外的数据。要在 使用 BigQuery 和 Spanner,您需要创建一个外部数据 连接。然后,您可以运行将 BigQuery 数据与 Spanner 数据。

如需创建使用 Data Boost 的 Spanner 外部数据连接,请选择以下选项之一:

控制台

  1. 前往 BigQuery 文档中的创建 Spanner 连接部分,然后按照 Cloud 控制台中的说明操作。

  2. 外部数据源窗格中,选中从 并行使用 Spanner Data Boost 复选框。

bq

  1. 转到创建 Spanner 连接 ,然后按照 bq 操作说明。

  2. 将以下连接属性设置为 true

  • useParallelism
  • useDataBoost

以下示例使用 bq mk 创建名为“my_connection”的新连接 Data Boost 的必需属性:

bq mk --connection --connection_type='CLOUD_SPANNER' --location='us' \
--properties='{"database":"projects/my-project/instances/my-instance/databases/my-database", "useParallelism":true, "useDataBoost": true}' my_connection

运行联合查询

如需使用 Data Boost 运行联合查询,请使用指定使用 Data Boost 的 BigQuery 连接。如需了解详情,请参阅为启用了 Data Boost 的 Spanner 创建 BigQuery 连接

您可以从 Google Cloud 控制台的 Spanner 页面或 BigQuery 开始。

从控制台的 Spanner 页面开始

  1. 前往 Google Cloud 控制台中的 Spanner 实例页面。

    转到“实例”页面

    控制台会显示 Spanner 列表 实例。

  2. 选择一个 Spanner 实例,然后选择一个数据库。

  3. 数据库概览页面的导航菜单中,点击 Spanner Studio

  4. 点击在 BiqQuery 中查看标签页。

  5. 在 BigQuery 中查看对话框中,输入连接 ID。

    这会创建一个新连接。如果 ID 已存在,则会发生错误。

  6. 填写对话框的其余部分,然后选择并行读取数据使用 Spanner Data Boost 复选框。

  7. 点击在 BigQuery 中查看

    BigQuery Studio 随即打开。输入并运行您的 联合查询。

    以下示例向名为 orders 的 Spanner 数据库发出联合查询,并将结果与名为 mydataset.customers 的 BigQuery 表联接。

    SELECT c.customer_id, c.name, rq.first_order_date
    FROM mydataset.customers AS c
    LEFT OUTER JOIN EXTERNAL_QUERY(
      'my-project.us.example-db',
      '''SELECT customer_id, MIN(order_date) AS first_order_date
      FROM orders
      GROUP BY customer_id''') AS rq
      ON rq.customer_id = c.customer_id
    GROUP BY c.customer_id, c.name, rq.first_order_date;

从 BigQuery 开始

  • 在浏览器中输入以下网址:

    https://console.cloud.google.com/bigquery

    BigQuery 会在您最近访问的项目中打开,并显示 BigQuery Studio。在此处运行联合查询。

后续步骤