数据集位置

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

有关 BigQuery 区域价格的信息,请参阅价格页面。

主要概念

您在创建数据集时会指定一个位置用于存储 BigQuery 数据。创建数据集后,该位置无法更改。

位置具有两种类型:

  • “区域位置”是一个具体的地理位置,如东京。如需了解详细信息,请参阅“地理位置和区域”页面的区域资源

  • “多区域位置”是包含至少两个地理位置的大型地理区域,例如美国。如需了解详细信息,请参阅“地理位置和区域”页面的多区域资源

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

区域位置

区域名称 区域说明
美洲
us-west2 洛杉矶
northamerica-northeast1 蒙特利尔
us-east4 北弗吉尼亚
southamerica-east1 圣保罗
欧洲
europe-north1 芬兰
europe-west2 伦敦
europe-west6 苏黎世
亚太地区
asia-east2 香港
asia-south1 孟买
asia-northeast2 大阪
asia-east1 台湾
asia-northeast1 东京
asia-southeast1 新加坡
australia-southeast1 悉尼

多区域位置

多区域名称 多区域说明
EU 欧盟1
US 美国

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

指定位置

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

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

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

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

位置注意事项

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

  • 共置 BigQuery 数据集和外部数据源。
    • 在 Cloud Storage 等外部数据源中查询数据时,查询的数据必须与 BigQuery 数据集位于相同位置。例如,如果您的 BigQuery 数据集位于 EU 多区域位置,则包含您要查询的数据的 Cloud Storage 存储分区必须位于 EU 的多区域存储分区中。如果您的数据集位于 US 多区域位置,则 Cloud Storage 存储分区必须位于 US 的多区域存储分区中。
    • 如果您的数据集位于区域位置,则包含您要查询的数据的 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 数据集位于 EU 多区域位置,则包含您要导出的数据的 Cloud Storage 存储分区必须位于 EU 的区域或多区域位置。
    • 如果您的数据集位于区域位置,则您的 Cloud Storage 存储分区必须是同一位置的区域存储分区。例如,如果您的数据集位于东京区域,则您的 Cloud Storage 存储分区必须是位于东京的区域存储分区。
    • 例外情况:如果您的数据集位于 US 多区域位置,则可以将数据导出到任何区域或多区域位置的 Cloud Storage 存储分区中。
  • 制定数据管理计划。
    • 如果您选择区域存储资源(如 BigQuery 数据集或 Cloud Storage 存储分区),请制定按地理位置管理数据的计划。

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

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

您无法在创建数据集后更改其位置。此外,您也无法将数据集从一个位置移动到另一个位置。如果需要将数据集从一个位置移动到另一个位置,请按以下流程操作:

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

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

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

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

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

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

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

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面