Pentaho 数据集成 setVariable 不起作用
Posted
技术标签:
【中文标题】Pentaho 数据集成 setVariable 不起作用【英文标题】:Pentaho Data Integration setVariable not working 【发布时间】:2018-09-18 07:07:19 【问题描述】:我在 PDI 7.0 上,并且在转换中有一个“修改的 Java 脚本值”步骤,如下所示:
var numberOfDays = 100;
Alert(numberOfDays);
setVariable("NUMBER_OF_DAYS", numberOfDays, "r");
Alert(getVariable("NUMBER_OF_DAYS", ""));
但是,当我运行转换时,第一个 Alert 正确抛出 100,但下一个 Alert 为空白(意味着未设置变量)。
这里有什么问题?
【问题讨论】:
【参考方案1】:作为经验法则,您应该永远不要设置变量并在相同的转换中读取它.
在设置 Set Variables
步骤时看到 Spoon 中弹出的警告:
也就是说,如果你真的坚持要通过 Java Script 设置,你可以做的是以下设计:
在哪里
1) 设置变量变换用于设置值:
var numberOfDays = 100;
Alert(numberOfDays);
setVariable("NUMBER_OF_DAYS", numberOfDays, "r");
2) 获取变量transformatoin只读取它
Alert(getVariable("NUMBER_OF_DAYS", ""));
两种转换都使用相同的步骤,但它们有不同的任务。
【讨论】:
如果我们右键单击spoon中的setVariable特殊功能并单击Sample,他们提供的示例确实setVariable然后警告......他们应该改变这个不要混淆像我这样的新手...... 我在下一个转换中有一个 Generate Rows 步骤,我想使用在我的第一个转换中设置的变量。如上所述,我在第一步中设置了 NUMBER_OF_DAYS 和 START_DATE...我想在下一个转换的 Generate Rows 步骤中使用 NUMBER_OF_DAYS 作为 Limit,并将 START_DATE 作为 Generate Rows 步骤中的一个字段的值...我试过 $ NUMBER_OF_DAYS 和 $START_DATE 但它不起作用..我错过了什么吗? 生成行的 KTR 是否创建了空白参数?而且,您需要使用“将先前的结果复制到参数”+“为每个输入行执行”。看看这是否有效。我回答了一个类似的问题,那里有一个示例,您可能可以使用和适应。 link 您提出的@Nik 问题是另一个主题,将在 *** 上发布更多详细信息。以上是关于Pentaho 数据集成 setVariable 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Pentaho Kettle 修改的 Java 脚本 setVariable