2016-12-26 15 views
-1

私の要件はやや難解です。テキストファイル入力から複雑なXMLを生成する必要があります。私はそれを成功させましたが、それには'11 XML join 'が含まれています。そのため、データセットが大量である場合、コードのパフォーマンスは哀れです。PentahoケトルのXML Join Stepはパフォーマンスが非常に低い

パフォーマンスの良い複雑なXML生成をどのようにコードすることができますか?

いくつかの提案の後、私はすべての結合を削除し、ストリームルックアップ(ケトルサンプルで示されているように)と最終的な結合のための 'modified java script'を利用しました。

しかし、「最終参加ステップ」で失敗しています。以下は、失敗して「メモリ不足」を起こしている参加です。

var request = new XML() 

request = <newbiz xsi:schemaLocation="http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0 newbiz.xsd" xmlns="http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <newbiz-header> 
     <total-consumers>1</total-consumers> 
     <creditor-name>DefCrdtr</creditor-name> 
     <total-principal>1</total-principal> 
     <total-charge>1</total-charge> 
     <total-interest>1</total-interest> 
     <total-balance>1</total-balance> 
    </newbiz-header> 
    <consumers>{xmlConsumerNewFinal}</consumers> 
</newbiz> 

var xmlconsumers_final=request.toXMLString(); 

何か提案があります。 XMLを使用して

答えて

1

はい、その本当にパフォーマンスの低下をステップに参加、私はこのすべてのステップを削除し、スクリプトステップに置き換え、Pentahoのケトルに含まれているのE4XのECMAScriptは(、サイのJavaScriptエンジンと特別で動作するように考案されています例えばXML)

、あなたはvar foo = new XML(); jsの他のエンジンに含まれていない

すべてが速く、この技術を使用してXMLSを構築するシンプルになります使用することができます。 は、docにのぞき見を取る: http://wso2.com/project/mashup/0.2/docs/e4xquickstart.html

+0

それがパフォーマンスに助けたとして、私はあなたの答えを受け入れました。 400K行を超えると失敗し、「メモリ不足」を起こします。あなたの提案に応じて、私が書いたスクリプトで質問を更新しました。パフォーマンスを向上させるために私がさらにできることは何ですか? –

+0

ありがとうございますが、私はすでに8GBまで上げています。私はこれを行うための最適な方法を探したい。私は、スクリプトの代わりにデカルト結合を使用すると、動作しています。私はスクリプトを使いたいので困惑しています。 –

+0

最終ステップをxmlオブジェクトを使用せずに文字列の連結として扱います。このshoulははるかに良いラムのパフォーマンスになります – jipipayo

関連する問題