【问题标题】:What is the scope of result rows in PDI Kettle?PDI Kettle 中结果行的范围是什么?
【发布时间】:2018-06-08 11:03:02
【问题描述】:

在kettle 中处理结果行是在程序内部传递列表的唯一方法。但这究竟是如何工作的呢?这个话题没有很好的记录,有很多问题。

例如,包含 2 个转换的作业可以将结果行从第一个发送到第二个。但是,如果有第三个转换来获取结果行呢?范围是什么?您也可以将结果行传递给子作业吗?您可以根据转换中的逻辑清除结果行吗?

在编程中使用列表和数组是有用且必要的,但在 PDI Kettle 中会令人困惑。

【问题讨论】:

    标签: kettle pentaho-spoon pdi


    【解决方案1】:

    我同意使用结果行可能会令人困惑,但您可以确信:它有效。

    是的,您可以将它传递给一个子作业,并在一系列子作业中(将范围定义为“在 Java 机器中有效”以进行第一次测试)。

    不,没有办法清除转换中的结果(当然也不是基于公式)。这将意味着严重的维护超载。

    Kettle 不是命令式语言,它更像是数据流家族。这意味着它更接近您在开发 ETL 时的思维方式,并且性能要高得多。缺点是列表和数组没有意义。只有数据流。

    这就是结果集:数据流,就像 sql 查询的结果集。下一个作业必须打开它,将每一行传递给转换,并在最后一行之后关闭它。

    【讨论】:

    • 感谢您的洞察力。我希望这个主题有更好的记录。
    • 十年前,唯一的文档是 java 源代码。现在已经不是这样了。您可能对 Pentaho Kettle 解决方案:使用 Pentaho 数据集成构建开源 ETL 解决方案感兴趣,作者是 Matt Casters、Roland Bouman、Jos van Dongen
    • 尽管我很欣赏优秀文献的建议,但对于记录结果行在作业之间如何工作的文档并没有帮助。您推荐的书不包含有关结果行范围的任何信息。我已经与 Pentaho ETL 合作了几年,目前只对这里详细介绍的高级和小众主题感兴趣。
    • 嗯,用两个词:与幼稚的印象不同,数据不会在 PDI 中移动。它被读取一次,然后一组指针告诉它在哪一步。这组指针在转换完成时被销毁,除了已放入“结果”中的行。在这种情况下,它被推送到具有最大范围的堆栈上(如果我记得的话)。在作业级别,机制类似,只是您可以控制范围。
    • 在不同层次的用户体验的指导下,开发经历了很多尝试和错误。所以它是一个理论上没有理论和实践之间差异的领域,但在实践中是有区别的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    相关资源
    最近更新 更多