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

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

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

谢谢你, 深蒂

【问题讨论】:

    标签: mongodb pentaho kettle


    【解决方案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}

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 2023-03-21
      相关资源
      最近更新 更多