如何在 Pentaho 中定义循环 xpath

How to define the loop xpath in Pentaho

提问人:swathi anand 提问时间:11/1/2023 最后编辑:Rishu Sswathi anand 更新时间:11/13/2023 访问量:21

问:

<?xml version="1.0" encoding="ISO-8859-1"?>
<ONIXmessage
    xmlns="http://www.editeur.org/onix/3.0/short/onix-international.dtd" release="3.0">
    <header>
        <sender>
            <x298>Ingram Book Company</x298>
            <x299>Andy Stone</x299>
            <j272>[email protected]</j272>
        </sender>
        <x307>20230924</x307>
        <m184>eng</m184>
        <x310>01</x310>
        <m186>USD</m186>
    </header>
    <product>
        <a001>015864289</a001>
        <a002>03</a002>
        <productidentifier>
            <b221>02</b221>
            <b244>000200853X</b244>
        </productidentifier>
        <descriptivedetail>
            <x314>00</x314>
            <b012>BC</b012>
            <b333>B102</b333>
            <b333>B305</b333>
            <measure>
                <x315>01</x315>
                <c094>8.50</c094>
                <c095>in</c095>
            </measure>
            <measure>
                <x315>02</x315>
                <c094>5.50</c094>
                <c095>in</c095>
            </measure>
            <measure>
                <x315>03</x315>
                <c094>0.45</c094>
                <c095>in</c095>
            </measure>
            <measure>
                <x315>08</x315>
                <c094>0.4200</c094>
                <c095>lb</c095>
            </measure>
            <x316>CA</x316>
        </descriptivedetail>
    </product>
</ONIXmessage>

我需要将此xml文件加载到Pentaho中并将其转换为csv格式。测量具有多个循环,并且只考虑第一个循环。我需要列名,如 x315、x315_1、x315_2、x315_3、x315_4......

pentaho pentaho-cde pentaho-design-studio

评论


答:

0赞 Ana GH 11/13/2023 #1

好的,按照这篇博文: https://dwbi.org/pages/169,您可能需要分块多次读取文件,然后合并流以仅生成一个文件。

因此,您读取了构成唯一文件的属性(标头的内容,以及示例中的大多数产品属性:a001、a002b221...),同时,在单独的流中,您读取了度量中的属性,以及上面构成唯一标识符的一些属性,在我的示例中,我只是读取了 x314 属性,之后使用它进行合并,但对于您的真实文件,您可能需要添加更多信息或使用不同的属性作为连接的唯一键。

所以我的转换看起来像这样: 要获得此结果,您可以放入一个 CSV 文件: Transformation steps |x298|x299|...|x315|c094|c095| |---|---|---|---|---|---| |英格拉姆|安迪·斯通|...|01|8.50|英寸| |英格拉姆|安迪·斯通|...|02|5.50|英寸| |英格拉姆|安迪·斯通|...|03|0.45|英寸| |英格拉姆|安迪·斯通|...|04|0.4200|磅|

那么,如何在Measure_content中配置“从 XML 获取数据”步骤呢?在配置步骤时,在“内容”选项卡中,在“循环 XPath”配置中,要求“获取 XPath 节点”并选择“测量”路径:Ask for XPath Nodes Select measure path

选择路径后,转到下一个选项卡“字段”,除了获取度量节点中的属性外,还可以手动添加 x314 字段并手动放置路径,在所选节点中向上一级 ():../*[name()='x314']Adding the x314 field