如何在Dataform中跨多个地域查询BigQuery数据集?
可以在Dataform中跨地域查询不同数据集的表吗?
完全可以,以下是两种常用实现方式:
1. 直接在SQL中指定完整跨地域表路径
BigQuery支持在SQL语句中通过地域前缀指定不同地域的数据集,Dataform会直接执行该SQL,不受defaultLocation的限制。
针对你的场景,查询EU地域的dataset1和默认地域的dataset2时,SQL可以这么写:
SELECT * FROM `EU.dataset1.target_table` UNION ALL SELECT * FROM `dataset2.another_table`
2. 使用ref函数时指定地域参数
如果你习惯用Dataform的ref函数管理表依赖,可以在调用ref时通过第二个参数的location字段,覆盖默认地域配置。
示例代码:
config { type: "view" } SELECT * FROM ${ref("target_table", { location: "EU" })} UNION ALL SELECT * FROM ${ref("another_table")}
这里target_table归属EU地域的dataset1,another_table归属默认europe-west1地域的dataset2,ref会自动生成正确的跨地域表引用路径。
注意事项
- 跨地域查询会产生额外的网络传输费用,需关注BigQuery的计费规则
- 确保Dataform使用的服务账号拥有所有目标地域数据集的访问权限
内容的提问来源于stack exchange,提问作者Snowfire
相关产品推荐
相关产品推荐

