You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google BigQuery跨地域读写错误:源us-east4与目标US不匹配的解决方法

错误原因解释

这个错误是因为BigQuery数据集的位置与存储外部表数据的GCS桶位置不匹配:

  • 你的BigQuery数据集dez-de-404011.zoom位置为US(多区域)
  • 存储Parquet文件的GCS桶gs://dtc_data_lake_dez-de-404011位置为us-east4(单区域)

BigQuery执行查询时,默认会用数据集的位置作为查询结果的处理位置,当源数据(GCS)位置和处理位置分属不同区域组时,就会触发"不能在不同位置读写"的限制。

解决办法

提供三种可行方案,按需选择:

方案1:创建同区域数据集并重建外部表

BigQuery数据集创建后无法修改位置,需新建一个位置为us-east4的数据集,再在其中创建外部表:

  1. 创建新数据集:
CREATE SCHEMA `dez-de-404011.zoom_us_east4`
OPTIONS(location='us-east4');
  1. 在新数据集中创建外部表:
CREATE OR REPLACE EXTERNAL TABLE `dez-de-404011.zoom_us_east4.external_yellow_tripdata`
OPTIONS (
  format = 'PARQUET',
  uris = ['gs://dtc_data_lake_dez-de-404011/data/yellow/yellow_tripdata_2021-01.parquet',
'gs://dtc_data_lake_dez-de-404011/data/yellow/yellow_tripdata_2021-02.parquet']);

之后查询新表即可正常执行。

方案2:查询时强制指定处理位置

在查询语句中添加OPTIONS(location='us-east4'),让查询处理位置与GCS桶位置保持一致:

SELECT * FROM `dez-de-404011.zoom.external_yellow_tripdata`
OPTIONS(location='us-east4');

方案3:迁移GCS文件到对应区域的桶

如果不想改动数据集或查询逻辑,可以将Parquet文件复制到位置为US的GCS桶中,然后修改外部表的uris参数指向新桶的文件路径。

内容的提问来源于stack exchange,提问作者npkp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 05:15:05