水壶etl传递变量

kettle etl passing variable

在我的转换中,我在修改后的 java 脚本中创建了一个 var(当前时间格式为 yyyy-mm-dd HH24mmss )。然后我使用设置变量步骤将字段设置为变量,范围在根作业中有效。

问题是如何在另一个转换中(在同一个作业中)使用该变量?我试过获取变量,但似乎只有系统变量。我想要做的是在第二次转换中将日期输出到文件中。中间还有更多的转换,所以我不能在第一个转换中输出。

或者是否可以在作业中创建一个变量,并设置其值(yyyy-mm-dd HH24mmss 中的当前日期)然后在转换中使用它?

编辑:

答案有效,但日期不是我预期的格式(yyyy-mm-dd HH24mmss),并且不清楚日期是什么格式。例如,如果我尝试在修改后的 java 脚本中对其进行格式化并在其上使用 getFullYear 函数,我会得到 TypeError: Cannot find function getFullYear in object Wed May 25 17:44:04 BST 2016。但是如果我只是将它输出到一个文件,日期在 yyyy/mm/dd hh:mm:ss.

所以我发现另一种方法是使用 table 输入并生成所需格式的日期并设置变量,其余相同。

在您的第一个转换中,使用 Get System Info 步骤将当前 date/time 注入您的数据流,并将其 运行 注入 Set Variables 步骤以设置定义的变量在你的工作中。

当您执行 CTRL-Space 时,您正在使用的变量可能不会出现在下拉列表中。这是因为该变量是在 运行 时由作业分配的,并且在设计时不可用。只需在设计时在字段中输入“${VariableName}”。当您从包含该名称变量的作业中 运行 时,它应该可以工作。