Pentaho中的Mongodb输入

Posted

技术标签:

【中文标题】Pentaho中的Mongodb输入【英文标题】:Mongodb input in pentaho 【发布时间】:2013-06-19 11:59:42 【问题描述】:

我在 mysql 表中有一个时间字段。基于这个时间字段,我需要从 mongodb 集合中导入数据。 所以在 Pentaho 转换中,首先我有一个表格输入步骤,它可以获取所需的日期。 接下来我有一个 mongodb 输入步骤。这里如何根据上一步的输出过滤记录?

我看到在 mongodb 输入查询中,只有当它是环境变量或在另一个转换中定义时它才接受参数,但不识别上一步中的变量。 如何从上一步加载,请帮助我,我是 Pentaho 的新手,一周以来一直在尝试这个解决方案。

谢谢你, 深蒂

【问题讨论】:

【参考方案1】:

您已经回答了自己的问题:

我看到在 mongodb 输入查询中,只有当它是环境变量或在另一个转换中定义时它才接受参数,但不识别上一步中的变量。如何从上一步加载,请帮助我,我是 Pentaho 的新手,一周以来一直在尝试这个解决方案。

如果步骤无法接受输入流,则您必须完全按照您的描述进行操作。在一个转换中,访问 MySQL 表以获取时间并将其存储在变量中。然后在另一个转换中访问您的 MongoDB 步骤中的该变量。

请注意,您必须在两次转换中执行此操作,以确保在 MongoDB 步骤运行时设置变量。

【讨论】:

感谢您的回复。我在想是否有任何其他方法可以在同一个转换中从上一步加载。因为我们必须加载许多表,并且我们必须为每个表创建单独的转换才能拥有一个变量。有没有像 java 插件这样的其他方法?如果没有其他解决方案,那么是的,我将继续进行单独的转换。 您始终可以构建自定义 Java 步骤(通过创建 Java 步骤步骤或为 Kettle 编写步骤插件)来执行您想要的任何操作,因此这是可能的。【参考方案2】:

看看 optiq。这是最前沿的,但允许 sql 访问 mongodb,因此理论上您可以在表输入步骤而不是 mongo 输入步骤中使用它:

http://julianhyde.blogspot.co.uk/2013/06/efficient-sql-queries-on-mongodb.html

【讨论】:

谢谢你,这是非常有用的信息。但是是否可以从 mysql 加入一个表,从 mongodb 加入另一个表?此外,我们有 Pentaho 集成作业将数据加载到临时表中。如何在 pentaho 中使用它?有可能吗? 是的,只需从每个来源获取数据,确保它按连接键排序并使用“连接行”步骤。不知道你说的第二个问题是什么意思。【参考方案3】:

可以通过查询作为参数来实现。 在 Transformation 设置中添加一个参数(例如: MONGO_QRY )

例子

在 MongoDB 查询表达式 (json)

$MONGO_QRY

对我们来说效果很好,试试吧。如果没有,请告诉我们。

【讨论】:

以上是关于Pentaho中的Mongodb输入的主要内容,如果未能解决你的问题,请参考以下文章

从 Pentaho 数据集成连接到 MongoDB

如何使用 Pentaho 中的 mongodb 删除步骤删除 mongodb 集合中的文档

无法使用 Pentaho PDI CE 连接到 MongoDb

如何使用 Pentaho 从 json 中的三个表到 mongodb 执行复杂文档

Pentaho MongoDB 报告查询日期范围

Pentaho 中没有 MongoDB 选项