Pentaho Kettle Group与类型连接产生重复

时间:2018-03-15 08:26:24

标签: pentaho etl kettle

我有以下Excel文件:

Excel sheet screenshot

我的最终结果应该是(第一个条目的输出文件示例):

<?xml version="1.0" encoding="utf-8"?>
<asset>
    <asset_feature key="ItemID" value="12000"/>
    <asset_feature key="Name" value="Name of the first item"/>
    <asset_feature key="Price" value="1020.0"/>
</asset>

为了在初始步骤中实现它,我使用Row Normaliser步骤,然后使用类型Group by Concatenate strings separated by ,。我期待着这个:

<asset_feature key="ItemID" value="12000"/>, <asset_feature key="Name" value="Name of the first item"/>, <asset_feature key="Price" value="1020.0"/>

并使用来自XML Add - creating multi level XML files示例的技术替换>, <替换为:var xmlOutput=xmlOrderListNew.replace(">, <","><");,但我得到了以下结果(3个重复的行):

<asset_feature key="ItemID" value="12000"/>, <asset_feature key="Name" value="Name of the first item"/>, <asset_feature key="Price" value="1020.0"/>
<asset_feature key="ItemID" value="12000"/>, <asset_feature key="Name" value="Name of the first item"/>, <asset_feature key="Price" value="1020.0"/>
<asset_feature key="ItemID" value="12000"/>, <asset_feature key="Name" value="Name of the first item"/>, <asset_feature key="Price" value="1020.0"/>

所以,为了解决这个问题,我必须为获得Unique rows提供额外的转换步骤。转型图片:

Transformation flow

问题:如果没有额外Group by步骤,如何修复Unique rows步骤以不获取重复项,因为XML Add - creating multi level XML files没有此类问题?

可选问题1 :是否有任何简单的连接方法,以避免以后replace(">, <","><")步骤?

可选问题2 :如何制作漂亮的XML(带缩进)格式?

示例Excel&amp;转型是here

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

问题0(避免在组中重复):取消选中Include all row check box

问题1(串联中避免使用“,”):使用Concatenate string separated by(不使用昏迷)并且不要将任何内容设为value

问题2(Petty print xml / html):您可以在javascript步骤中放置任何函数。特别是你可以复制一台xml漂亮的打印机,例如formatXML.js

未被问到的问题:使用Memory Group by而不是Group by步骤,除非您确实拥有非常庞大的数据。