设置变量组件可以在作业的维度内设置一个变量值。位于“设置变量”组件所在ETL任务之后的其他ETL任务(同一作业内)或Shell任务(同一作业内)如果使用了“变量替换”功能,那么该任务内支持变量替换的参数都会在运行时被替换为“设置变量”组件中设置的同名变量值;同时,同一作业内“设置变量”组件之后的其它类型任务,所有占位符“${}”修饰的变量都会被自动替换。
双击画布中的设置变量组件,弹出设置变量窗口。
输入步骤名称,名称要求为非空,2到50个字符。
配置需要设置变量的字段及其对应的变量名。
单击<确定>按钮完成配置。
获取字段:单击<获取字段>按钮,进入获取字段页面,获取此步骤需要处理的字段。
字段名称:获取到的字段名称。
变量:字段名称对应的变量名。
缺省值:如果字段值为空,则默认使用该值。
ETL任务中使用表抽取或执行SQL组件,设计SQL语句时使用了参数名称占位,期望在运行时自动获取相应参数的值,以实现不修改ETL任务的情况下动态生成符合需求的SQL语句。
在作业中新建ETL任务“表抽取-设置变量”,实现的功能是:使用“表抽取”组件从表中查询最大的ID,然后使用“设置变量”组件将该值赋值给变量CUR_MAX_ID。
其中,“表抽取”组件配置信息如下:
“设置变量”组件配置信息如下:
新建ETL任务“执行SQL-使用变量替换”,实现的功能是:更新数据库student表中ID大于‘${CUR_MAX_ID}’的数据memo字段的值,这里的SQL语句使用了变量名称占位,且开启了“变量替换”功能。
“执行SQL”组件配置信息如下:
在作业中将上述两个ETL任务串起来。
“设置变量”组件只能在作业维度上设置变量值。涉及到变量替换的业务场景中,必须将设置变量步骤放在使用变量之前。使用规范:设置变量的过程单独创建一个ETL任务,所有使用了变量替换功能的ETL任务或Shell任务串接在设置变量任务之后。