如何将DataStage前序作业的计算结果设置为后续作业的运行参数
DataStage 11.3 读取Sequential File内容为作业参数操作步骤
前置校验
先确认你生成的4个Sequential File每个仅存储单行单个日期值,无多余表头、空行等内容,日期格式统一(如YYYY-MM-DD),后续无需额外转格式即可直接用于Sybase查询。
1. 配置Sequence作业前序任务节点
- 新建Sequence作业,拖入「Job Activity」阶段,关联你开发的用于生成4个日期文件的并行作业,配置好该并行作业需要的初始输入日期参数,设置触发规则为「作业执行成功后才触发后续节点」。
2. 配置Execute Command阶段读取日期文件
你需要添加4个独立的Execute Command阶段,分别对应读取4个日期文件,单个阶段配置规则如下:
- 「Command」栏填写系统读文件命令:Linux环境填
cat,Windows环境填type - 「Parameters」栏填写对应Sequential File的完整绝对路径,例如
/etl/data/param/biz_date_1.txt - 「Trigger」栏设置触发条件为「命令返回码=0」,避免读文件失败时将空值传入后续流程
可选优化:如果希望减少节点数量,可将4个日期输出到同一个文件的4个独立行,仅用1个Execute Command读取即可,后续通过字段函数拆分取值
3. 向Sybase查询作业传递参数
- 提前在你的Sybase查询作业中定义4个日期类型的作业参数,例如
p_biz_date1、p_biz_date2、p_biz_date3、p_biz_date4 - 在Sequence作业中拖入新的「Job Activity」阶段,关联你的Sybase查询作业
- 进入该Job Activity的「Parameters」标签页,每个参数的取值绑定对应Execute Command阶段的输出:
- 基础写法:
[Execute Command阶段名].$CommandOutput,例如读取第一个日期的阶段命名为Exec_ReadDate1,则参数p_biz_date1填Exec_ReadDate1.$CommandOutput - 去换行符写法:如果读取的日期末尾带系统换行符导致参数报错,用Trim函数处理:
Trim(Exec_ReadDate1.$CommandOutput,@FM)
- 基础写法:
- 若用单个文件存4个日期的优化方案,取值写法为
Field([Execute Command阶段名].$CommandOutput,@FM,N),N为对应日期所在的行号。
常见问题排查
- 参数传递报错时,先到DataStage Director中查看对应Execute Command阶段的运行日志,确认
$CommandOutput的实际输出是否符合预期 - 若Sybase查询报日期格式错误,可回到生成日期的并行作业中,直接将日期转为Sybase识别的字符串格式后再写入Sequential File,避免后续额外处理。
内容的提问来源于stack exchange,提问作者PinkAndi
相关产品推荐
相关产品推荐

