【发布时间】:2018-03-16 14:36:07
【问题描述】:
我正在研究 Pentaho DI 包中的标准样本:GetXMLData - Read parent children rows。它从相同的 XML 输入 parent 行和 children 行中分别读取。我需要这样做并更新相同 MS Excel 文档的两个不同工作表。
我的理解是,实现它的正常方法是将第一个序列放入一个带有 XML 输出或写入器的转换文件中,第二个到第二个,最后通过第一个和第二个转换创建具有链的作业。
我的问题是:
- 当我尝试链接上述序列时,我在最终文档中丢失了第一个更新的 Excel 工作表的内容;
- 最后我只需要一个包含 Job 或 Transformation 的文件而没有依赖关系(在上述提议的情况下,我将拥有 1 个
KJB作业 + 2 个KTR转换文件)。
问题是:
- 在开始更新第二张 Excel 表之前,是否可以将上述示例中的 2 个序列与一些
wait节点连接起来? - 如果上述方法不起作用:是否可以将转换嵌入到作业中,而不是从外部文件中引用它们?
- 还有一个问题:哪个更好用:Excel 输出还是 Excel Writer?
==================
更新:
根据@AlainD 提议,我尝试将Block 节点放在中间。结果如下:
看起来Block 步骤可以是一个选项,但不知何故,它不能按预期使用Excel Output / Writers 节点(或者我做错了什么)。我观察到的是,Pentaho 尝试在Block 步骤之后执行下一步,然后 Excel 文件被上一步正确关闭。这会导致以下情况之一:我要么得到带有一张空工作表的 Excel 文件,要么生成的结果文件格式不正确。
我的输入 XML 文件(来自 Pentaho 发行版)和测试游乐场转换是:HERE
注意:玩游戏时不要忘记在运行之间删除生成的 MS Excel 文件。
有什么建议可以解决我的转换问题吗?
【问题讨论】:
-
你想达到什么目的?读取一个 XML 并写入两个 Excel 工作表?从 xlsx 上读取多个 Excel 工作表?在一个 xlsx 中写多个 Excel 工作表?请在阅读我的暂定答案之前澄清一下。
-
嗨@AlainD。是的,我想读取一个 XML 并编写两个 Excel 工作表(第一个工作表中的父项,第二个工作表中的子项)。因为我是这个 Pentaho 工具的新手,所以我错过了上面提到的
Block节点。如果没有它,我观察到两个Excel Writer试图同时打开以更新同一个文件,结果创建了两张纸,但一张是空的。另外,我需要将所有转换都放在一个文件中。希望现在变得更清楚。我会在星期一尝试你的建议,让你知道它是否适合我。再次感谢您的帮助。 -
只是一个评论:您需要将所有转换放在一个文件中并不意味着您不能在两个(或更多)单独的文件中开发它们。