如何仅使用类SQL语法在BigQuery中创建调度查询?
在BigQuery中用类SQL语法创建调度查询
BigQuery中对应Snowflake CREATE TASK的类SQL语法是CREATE SCHEDULED QUERY,可直接用SQL定义定时执行的查询任务,无需依赖UI操作。
基本语法结构
CREATE SCHEDULED QUERY [IF NOT EXISTS] `项目ID.数据集.调度查询名称` OPTIONS( schedule = 'CRON表达式 时区', -- 可选配置项 start_time = 'YYYY-MM-DDTHH:MM:SS', end_time = 'YYYY-MM-DDTHH:MM:SS', write_disposition = 'WRITE_TRUNCATE/WRITE_APPEND/WRITE_EMPTY', destination_table = `项目ID.数据集.目标表`, priority = 'INTERACTIVE/BATCH' ) AS -- 此处编写要调度执行的SQL逻辑 SELECT CURRENT_TIMESTAMP();
对应Snowflake示例的等价实现
针对你给出的Snowflake定时任务(每周日9-17点每小时执行一次,运行简单查询),BigQuery的等价写法如下:
CREATE SCHEDULED QUERY `my-project.my-dataset.t1_scheduled_query` OPTIONS( schedule = '0 9-17 * * SUN America/Los_Angeles', priority = 'INTERACTIVE' -- 对应Snowflake的仓库规格,BigQuery自动分配资源,可按需调整优先级 ) AS SELECT CURRENT_TIMESTAMP();
关键参数说明
- schedule:必填,格式为
CRON表达式 时区,和Snowflake的CRON规则一致,支持标准CRON语法。 - destination_table:若需将查询结果写入表,指定目标表路径,搭配
write_disposition控制写入模式(覆盖、追加或仅空表写入)。 - start_time/end_time:可选,设置任务的开始和结束执行时间,默认创建后立即生效,无结束时间。
- priority:指定查询优先级,
BATCH适合非紧急任务,资源占用更低;INTERACTIVE为默认,优先执行。
注意事项
- 执行该语句需拥有
bigquery.scheduledQueries.create和bigquery.jobs.create权限。 - 调度查询会以创建者身份执行,需确保创建者对查询涉及的数据集、表有对应读写权限。
- 可通过
ALTER SCHEDULED QUERY修改已有调度任务(如调整时间规则或SQL逻辑),用DROP SCHEDULED QUERY删除任务。
内容的提问来源于stack exchange,提问作者Émerson Engroff
相关产品推荐
相关产品推荐

