数据集位置

本页面介绍数据位置的概念以及可创建数据集的不同位置。如需了解如何设置数据集的位置,请参阅创建数据集

如需了解 BigQuery 区域价格,请参阅价格页面。

主要概念

位置或区域类型

位置具有两种类型:

  • 单区域位置是具体的地理位置,如伦敦。

  • 多区域位置是至少包含两个地理位置的大型地理区域,如美国。

数据集位置

在创建数据集时,您可以指定一个位置以用于存储 BigQuery 数据。在创建数据集后,您无法更改该位置,但可以将数据集复制到其他位置,或手动将数据集移动到其他位置(在其他位置重新创建数据集)

BigQuery 在包含待查询表的数据集所在的位置处理查询。

BigQuery 根据服务专用条款将您的数据存储在选定位置。

支持的区域

单区域位置

区域说明 单区域名称
美洲
拉斯维加斯 us-west4
洛杉矶 us-west2
蒙特利尔 northamerica-northeast1
北弗吉尼亚 us-east4
俄勒冈 us-west1
盐湖城 us-west3
圣保罗 southamerica-east1
南卡罗来纳 us-east1
欧洲
比利时 europe-west1
芬兰 europe-north1
法兰克福 europe-west3
伦敦 europe-west2
荷兰 europe-west4
苏黎世 europe-west6
亚太地区
香港 asia-east2
雅加达 asia-southeast2
孟买 asia-south1
大阪 asia-northeast2
首尔 asia-northeast3
新加坡 asia-southeast1
悉尼 australia-southeast1
台湾 asia-east1
东京 asia-northeast1

多区域位置

多区域说明 多区域名称
欧盟成员国的数据中心1 EU
美国的数据中心 US

1 位于 EU 多区域的数据不会存储在 europe-west2(伦敦)或 europe-west6(苏黎世)数据中心中。

指定位置

在加载数据、查询数据或导出数据时,BigQuery 会根据请求中引用的数据集确定运行作业的位置。例如,如果查询引用了存储在 asia-northeast1 地区的数据集中的表,则查询作业将在该地区中运行。如果查询未引用数据集中的任何表或其他资源,并且未提供目标表,则查询作业将在 US 地区中运行。如果项目在 US 以外的地区具有固定费率预留,并且查询未引用数据集中的任何表或其他资源,则您在提交作业时必须明确指定固定费率预留的位置。

如需明确指定运行作业的位置,请按以下步骤操作:

  • 使用 Cloud Console 查询数据时,点击更多 > 查询设置,然后在处理位置部分,点击自动选择并选择数据的位置。
  • 使用 BigQuery 网页界面查询数据时,点击显示选项,在处理位置处,点击未指定并选择数据的位置。
  • 使用 bq 命令行工具时,请提供 --location 全局标志并将值设为您的位置。
  • 使用 API 时,在作业资源jobReference 部分的 location 属性中指定您的区域。

如果指定的位置与请求中的数据集位置不匹配,BigQuery 将返回错误。

位置注意事项

在选择数据的位置时,请考虑以下事项:

  • 共置 BigQuery 数据集和外部数据源。
    • 在 Cloud Storage 等外部数据源中查询数据时,查询的数据必须与 BigQuery 数据集位于相同位置。例如,如果您的 BigQuery 数据集位于欧盟多区域位置,则包含您要查询的数据的 Cloud Storage 存储分区必须位于欧盟的某个多区域存储分区中。如果您的数据集位于美国多区域位置,则您的 Cloud Storage 存储分区必须位于美国的某个多区域存储分区中。
    • 如果您的数据集位于单区域位置,则包含您要查询的数据的 Cloud Storage 存储分区必须位于同一位置的单区域存储分区中。例如,如果您的数据集位于东京区域,则您的 Cloud Storage 存储分区必须是位于东京的单区域存储分区。
    • 如果外部数据集位于 Cloud Bigtable 中,则您的数据集必须位于 US 或 EU 多区域位置。您的 Cloud Bigtable 数据必须位于受支持的 Cloud Bigtable 位置之一。
    • 位置注意事项不适用于 Google 云端硬盘外部数据源。
  • 共置 Cloud Storage 存储分区,以加载数据。
    • 如果您的 BigQuery 数据集位于多区域位置,则包含您要加载的数据的 Cloud Storage 存储分区必须位于同一位置的区域或多区域存储分区中。例如,如果您的 BigQuery 数据集位于 EU,则 Cloud Storage 存储分区必须位于 EU 的单区域或多区域存储分区中。
    • 如果您的数据集位于单区域位置,则您的 Cloud Storage 存储分区必须是同一位置的单区域存储分区。例如,如果您的数据集位于东京区域,则您的 Cloud Storage 存储分区必须是位于东京的单区域存储分区。
    • 例外情况:如果您的数据集位于 US 多区域位置,则可以从任何区域或多区域位置的 Cloud Storage 存储分区加载数据。
  • 共置 Cloud Storage 存储分区,以导出数据。
    • 导出数据时,单区域或多区域 Cloud Storage 存储分区必须与 BigQuery 数据集位于相同位置。例如,如果您的 BigQuery 数据集位于欧盟多区域位置,则包含您要导出数据的 Cloud Storage 存储分区也必须位于欧盟的单区域或多区域位置。
    • 如果您的数据集位于单区域位置,则您的 Cloud Storage 存储分区必须是同一位置的单区域存储分区。例如,如果您的数据集位于东京区域,则您的 Cloud Storage 存储分区必须是位于东京的单区域存储分区。
    • 例外情况:如果您的数据集位于 US 多区域位置,则可以将数据导出到任何单区域或多区域位置的 Cloud Storage 存储分区中。
  • 制定数据管理计划。
    • 如果您选择的是单区域存储资源(如 BigQuery 数据集或 Cloud Storage 存储分区),请制定按地理位置管理数据的计划。

如需详细了解 Cloud Storage 位置,请参阅 Cloud Storage 文档中的存储分区位置

在不同位置之间移动 BigQuery 数据

您无法在创建数据集后更改其位置,但可以创建数据集的副本。您无法将数据集从一个位置移动到另一个位置,但可以手动移动(重新创建)数据集。BigQuery Data Transfer Service 可以将数据转移到许多区域的 BigQuery 数据集。

复制数据集

如需查看复制数据集的步骤(包括跨区域复制),请参阅复制数据集

移动数据集

如需手动将数据集从一个位置移动到另一个位置,请按照以下流程操作:

  1. 将数据从 BigQuery 表导出到数据集所在位置的单区域或多区域 Cloud Storage 存储分区中。例如,如果您的数据集位于欧盟多区域位置,请将您的数据导出到位于欧盟的单区域或多区域存储分区中。

    从 BigQuery 导出数据不会产生费用,但是将导出的数据存储在 Cloud Storage 中会产生费用。BigQuery 导出操作需要遵循导出作业的相关限制。

  2. 将数据从 Cloud Storage 存储分区复制或移动到新位置的单区域或多区域存储分区中。例如,如果要将数据从美国多区域位置移动到东京单区域位置,则需要将数据转移到位于东京的单区域存储分区。如需了解如何转移 Cloud Storage 对象,请参阅 Cloud Storage 文档中的重命名、复制和移动对象

    请注意,在不同区域之间转移数据会在 Cloud Storage 中产生网络出站流量费用

  3. 将数据转移到新位置的 Cloud Storage 存储分区后,(在新位置)创建一个新的 BigQuery 数据集。然后,将数据从 Cloud Storage 存储分区加载到 BigQuery 中。

    将数据加载到 BigQuery 时,您无需为此操作支付费用,但在删除数据或存储分区之前,您需要支付在 Cloud Storage 中存储数据的费用。数据加载完毕后,在 BigQuery 中存储数据也须支付费用。将数据加载到 BigQuery 需要遵循加载作业的相关限制。

您还可以使用 Cloud Composer 以编程方式移动和复制大型数据集。

如需详细了解如何使用 Cloud Storage 存储和移动大型数据集,请参阅使用 Cloud Storage 处理大数据

将数据转移到 BigQuery 数据集中

BigQuery Data Transfer Service 会将数据从来源转移(复制)到 BigQuery 中的目标数据集。 与 BigQuery 类似,BigQuery Data Transfer Service 是一种多区域资源

BigQuery 数据集位置是在您创建目标数据集时指定的,用于存储 BigQuery Data Transfer Service 转移的数据。设置转移作业时,转移作业配置本身将设置为目标数据集所在的位置。BigQuery Data Transfer Service 会处理数据,并将其暂存到目标 BigQuery 数据集所在的位置。

您还可以为要转移到 BigQuery 的数据设置一个区域。 在大多数情况下,存储数据的区域和目标数据集在 BigQuery 中的位置是不相关的。在其他种类的转移作业中,数据集和源数据必须共置于同一区域或兼容区域中。

如需详细了解转移作业和区域兼容性,请参阅数据集位置和转移作业

后续步骤