如何在 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 时传递变量的主要内容,如果未能解决你的问题,请参考以下文章

kettle如何连接mongodb

PDI Kettle - 如何在 MongoDB 输出中为查询匹配指定 ObjectId

kettle怎么过滤掉某个字段空字符串数据

如何解决 Kettle 中的这个 in/out mysql 参数错误?

pentaho dpi-5.3(kettle)中的mongodb源代码在哪里?

kettle的mongodb输入多个字段想加