任务参数

什么是任务参数

在日常数据开发中,我们经常遇到这样的场景:

  • 每天处理前一天的数据:
    WHERE dt = '2023-09-21'
    WHERE dt = '2023-09-21'
  • 每月统计上月数据:
    WHERE month = '2023-08'
    WHERE month = '2023-08'
  • 查询特定城市数据:
    WHERE city = 'Shanghai'
    WHERE city = 'Shanghai'

如果把日期、城市等信息写死在代码中,任务运行时就无法动态适应变化。任务参数就是为了解决这个问题而设计的——在代码中用

${参数名}
${参数名}
占位,运行时自动替换为实际值。

核心价值:动态替换、灵活配置、一次定义多处使用、修改参数无需改动代码逻辑。

基本概念

分类概念含义示例
参数定义自定义参数在代码中用
${参数名}
${参数名}
引用
${yesterday}
${yesterday}
参数赋值常量固定不变的字符串或数字
Shanghai
Shanghai
1234
1234
参数赋值系统内置参数系统预置的动态值,如计划时间
sys_plan_datetime
sys_plan_datetime
参数赋值时间表达式基于计划时间的格式化和偏移计算
$[yyyy-MM-dd, -1d]
$[yyyy-MM-dd, -1d]
参数赋值内置时间函数处理月初、周一等复杂时间计算
first_day_of_month()
first_day_of_month()

快速开始

第1步:在代码中使用参数

SELECT * FROM sales_table WHERE city = '${city}' AND dt = '${yesterday}';

第2步:配置参数取值

点击"参数"按钮,系统自动识别出

city
city
yesterday
yesterday
两个参数,为它们赋值:

  • city
    city
    =
    Shanghai
    Shanghai
  • yesterday
    yesterday
    =
    $[yyyy-MM-dd, -1d]
    $[yyyy-MM-dd, -1d]

第3步:运行验证

点击"运行",系统将参数替换后执行(假设今天是 2023-09-22):

SELECT * FROM sales_table WHERE city = 'Shanghai' AND dt = '2023-09-21';

关键要点

  • 参数格式固定为
    ${参数名}
    ${参数名}
    ,参数名只能包含字母、数字、下划线
  • 不能在代码中直接引用内置参数(如
    sys_biz_day
    sys_biz_day
    ),必须先赋值给自定义参数再引用
  • SQL 中需要引号时自行添加:
    '${city}'
    '${city}'

参数类型与作用域

任务参数

作用范围仅限当前任务,适合单个任务独有的配置。

创建方式:在脚本中输入

${参数名}
${参数名}
后系统自动识别,或点击「参数」按钮手动新建。

配置项说明示例
参数名称参数的唯一标识
city
city
yesterday
yesterday
取值来源选择"任务"或"任务组"任务
参数取值参数的实际值或表达式
Shanghai
Shanghai
$[yyyy-MM-dd, -1d]
$[yyyy-MM-dd, -1d]
加密取值勾选后取值以密文显示用于密码等敏感信息
是否忽略勾选后不进行参数替换
${var}
${var}
作为普通文本

任务组参数

作用范围为任务组内所有任务,适合多任务共享的配置(如数据库名称、环境标识)。

在任务组页面点击「参数」→「新建」创建。在具体任务中使用时,需在取值来源中显式切换为"任务组"。

-- 任务组参数:db_name = warehouse_prod -- 任务A 和 任务B 共用同一个参数 SELECT * FROM ${db_name}.table_a; SELECT * FROM ${db_name}.table_b;


参数在不同运行方式下的效果

临时运行(点击"运行"按钮)

弹窗提示输入参数值,本次运行生效,不影响已保存的参数配置。适合调试和验证。

周期调度运行

使用已保存的参数配置,根据调度计划时间动态计算参数值。适合生产环境。


附:如何确认是否支持完整参数功能

在 SQL 任务中运行以下验证:

SELECT '${lastDay}' AS lastDay;

参数配置:

lastDay
lastDay
=
add_days('yyyy-MM-dd', -1)
add_days('yyyy-MM-dd', -1)

如果返回昨天的日期(如

2023-11-11
2023-11-11
),说明账号在灰度范围内,支持完整参数功能。如果
${lastDay}
${lastDay}
未被替换,说明暂不支持。


相关文档

文档说明
任务参数语法参考系统内置参数、时间表达式、内置时间函数完整语法和速查表
任务参数场景示例日报、月报、周报、时间戳查询等完整业务场景示例和 FAQ
任务开发与调度Studio SQL 任务的创建、调度和运维
工作流(组合任务)将多个参数化任务编排为 DAG,统一调度
Python 任务在 Python 任务中使用参数
联系我们
预约咨询
微信咨询
电话咨询
邮件咨询