在CSV文件输入的列映射中传递变量

时间:2018-07-07 13:33:16

标签: pentaho pentaho-spoon

我有一个CSV文件输入步骤,通过该步骤我将CSV文件数据成功填充到了final_result表中。但是,我的final_result表中有一个ID列,它将显示此提要属于哪个批次。

此ID列的值应来自变量。为此,我要做的是

  1. 在每个批次的开始处,将在一个单独的batch_info表中创建一个条目,该表具有一个标识列以标识批次ID。
  2. 该批次ID使用设置变量步骤存储到变量中,然后在下一个转换中使用get variable步骤进行访问。
  3. 在下一个转换中,该转换同时包含CSV输入步骤和表输出步骤,我将这个变量手动写入表输出步骤的数据库字段映射中,以使其与final_result表中的ID列匹配。

但是,尽管变量具有值,但它没有进入final_result表,并且ID列显示为空。

还有其他更好的方法吗?如果需要提供更多信息,请告诉我。

我也试图用图像来解释这一点。

1。)设置变量p_index,它是db存储过程的变量:

1. Set the variable p_index which is out variable of the db stored proc 2.)获取上一步中设置的变量的值:

2. Get the value of variable set in previous step 3.)在csv的列列表中手动添加变量p_index:

3. Manually add the variable p_index in the columns list of the csv 4. Map that variable in the table output step mappings with the table column

1 个答案:

答案 0 :(得分:0)

在很多头撞墙和朋友的一些想法之后,我终于找到了我想要的解决方案:-)

我从CSV文件中获取了数据,并将其存储在“将行复制到结果”任务中,并将批次ID设置在变量中。在下一个转换中,我使用了来自结果的获取行,还使用了获取变量,并将这两者合并为笛卡尔乘积步骤,并且此笛卡尔乘积步骤的输出定向到表输出步骤。这样,我的batch_ID将与当前批次的每一行合并。

虽然这是一次不错的学习经历。