如何在 Kettle 中过滤 Mongodb INPUT 时传递变量
Posted
技术标签:
【中文标题】如何在 Kettle 中过滤 Mongodb INPUT 时传递变量【英文标题】:How to pass variable while filtering Mongodb INPUT in Kettle 【发布时间】:2014-11-14 12:33:37 【问题描述】:过滤Mongodb INPUT时如何传递当前日期?
当前日期为 Pentaho 系统日期
在 mongo db 输入中查询
created_at : $gte : $date : "2014-12-31T00:00:00.000Z"
而不是2014-12-31T00:00:00.000Z
-> 今天的日期在2014-12-31T00:00:00.000Z
这样的变量中的相同格式$TODAY-DATE
我需要通过变量将值替换为今天的日期
如下:
created_at : $gte : $date : "$TODAY-DATE"
【问题讨论】:
这个变量是从哪里来的?你使用什么语言?是什么阻止您在语言中将其用作变量? 变量的值将来自系统信息步骤,它给出系统日期(固定)。在运行转换时,我将在环境变量下使用此变量。我正在使用 PDI 水壶 好吧,我对这项技术不太了解,但我现在已经正确标记了它,我们会看看是否有人知道答案 嗨!您需要用来自 PDI 的变量替换输入步骤中的日期值吗?在输入转换之前在转换中定义变量的工作怎么样? 如果您想了解更多关于通过工作执行此操作的信息,请告诉我... 【参考方案1】:我建议尝试以下方法:
在调用转换的作业中,创建一个满足格式预期的变量。您可以使用javascript
步骤来评估和存储变量。将值存储在变量中的简短脚本示例:
// do some alterations to 'modifiedDate',
// then store the variable in the memory:
parent_job.setVariable("Extraction.MongoDB.Date", modifiedDate);
将变量作为参数传递给转换(编辑作业条目 ==> 参数选项卡);
使用以下约定调用变量:$Extraction.MongoDB.Date
在相关的 MongoDB 输入步骤字段中;
我希望这会有所帮助。
【讨论】:
【参考方案2】:传递变量的正确语法是TODAY-DATE
是一个变量
created_at : $gte : $TODAY-DATE
【讨论】:
以上是关于如何在 Kettle 中过滤 Mongodb INPUT 时传递变量的主要内容,如果未能解决你的问题,请参考以下文章
PDI Kettle - 如何在 MongoDB 输出中为查询匹配指定 ObjectId
如何解决 Kettle 中的这个 in/out mysql 参数错误?