如何使ibm数据阶段从源中读取特定的作业参数值

问题描述

我试图将输入到数据源中的文件名捕获到表列source_file中,为此我创建了一个作业参数sales*;我用文件sales.xlsxsales_copy.xlsx进行了测试。

已成功执行输入除数据库source_file列以外的数据,它应该是sales.xlsxsales_copy.xlsx。但是读取的数据库sales*,因为在source_file列的映射派生中,我将其设置为source_param,其值为sales*

如何使其专门读取文件sales.xlsxsales_copy.xlsx而不是sales*

解决方法

当您将参数值定义为'Sales * .xls'时,我不认为它将参数值的名称作为并行作业中的一列使用(将Sales * .xls当作常量,无论您在何处定义它在顺序文件中作为文件名,也可以将其作为参数传递。
您可以做的是

  1. 定义并行作业,在该作业中您将“文件名列”定义为顺序文件阶段(导入数据的位置)中的列名,并且文件名必须由参数定义。
  2. 创建一个顺序文件,在循环中调用上述并行作业,在该循环中,您将所有文件名作为文件名参数的循环计数器(循环同时使用字符串和数字值)进行传递。
,

目前尚不清楚您要在何处执行此操作以及要完成哪些操作。首先,“ sales *”不是工作参数的有效名称。假设有一个名为jpFileName的工作参数。 要在作业中引用此参数,您需要参考。也就是说,参数名称用“#”字符包围,例如#jpFileName#。您将在输出列source_file的派生中使用此引用;我强烈建议您使用表达式编辑器选择参数引用。 运行作业时,在一次运行中将值“ sales.xlsx”作为参数值提供,而在另一次运行中将值“ sales_copy.xlsx”作为参数值提供。