BigQuery定时查询:跨项目创建带日期后缀的表是否可行?
BigQuery跨项目定时查询写入带日期后缀的表是否可行?
可行,但不能依赖定时查询默认的「目标表」配置,得换个方式实现:
- 别用定时查询的默认目标表设置:官方要求这个默认目标表必须和定时查询在同一个项目里,所以直接跳过配置页的目标表设置,把写入逻辑塞进SQL语句里。
- 用调度变量动态生成跨项目表名:定时查询内置了
@run_date变量(格式为YYYY-MM-DD),可以用它拼接出带日期后缀的跨项目表名。示例SQL:
如果想保留日期里的横杠,直接用-- 创建带日期后缀的跨项目表,这里把日期的横杠去掉转成YYYYMMDD格式 CREATE TABLE `目标项目ID.目标数据集ID.表名_${run_date.replace('-', '')}` AS SELECT * FROM `你的源项目ID.源数据集ID.源表` WHERE 日期字段 = @run_date${run_date}就行,比如表名_${run_date}。 - 给定时查询的服务账号加跨项目权限:定时查询默认用的是项目的BigQuery服务账号,得给这个账号授予目标项目的「BigQuery数据编辑者」权限,不然没法在目标项目创建和写入表。
- 避坑提醒:
- 怕重复运行导致表已存在报错的话,把
CREATE TABLE改成CREATE TABLE IF NOT EXISTS - 如果需要覆盖同日期的表,就用
CREATE OR REPLACE TABLE
- 怕重复运行导致表已存在报错的话,把
内容的提问来源于stack exchange,提问作者simon
相关产品推荐
相关产品推荐

