0

次のように、空白行とその下に追加のヘルダーを持つ CSV があります。

**blank line**
Available_Date_Feed
productID,availableDate
148305801,2015-08-07T00:00:00.000+0000
160611862,2015-07-29T00:00:00.000+0000
160611715,2015-07-29T00:00:00.000+0000
160342798,2015-07-29T00:00:00.000+0000

productID と availableDate の値を読みたいです。dataweave で通常の変換を行うと、null 値が返されます

これは私がdataweaveで書いたコードです:

%dw 1.0
%input in0 application/csv headers=true
%output application/java
---
payload  map  {
    productID:$.productID,
    availableDate:$.availableDate
}

ペイロードを次のように返します:

[{productID=null, availableDate=null}, {productID=null, availableDate=null}, {productID=null, availableDate=null}, {productID=null, availableDate=null}]

ここに何か提案はありますか?これに Groovy/MEL/正規表現を使用できますか? 行を使用して Dataweave で無視するには?

groovy/regex を使用して最初の 2 行をスキップできますか?

以下の groovy でパフォーマンスの問題に直面しています。Mule は 1 MB のファイルでも変換に時間がかかりすぎます。これに対する別の解決策はありますか?

4

3 に答える 3

0

Groovy を使用して最初の 2 行をスキップしました。このスクリプトは、カンマ区切りの値を直接フェッチします

 csvContent = message.payload
def filteredContent = new StringBuffer()
regexPattern = /(\S*),(\S*)/
finder = csvContent =~ regexPattern

(0..<finder.count).each {
    //println "Iteration: ${it+1}:"
    filteredContent.append(finder[it][0])
    filteredContent.append('\n')

}

return filteredContent.toString()

object to stringgroovyの前に使用

于 2015-11-05T12:18:19.453 に答える
0

私はそれが遅いことを知っています。まだ答えを待っている場合は、これを試してください。これはデータウィーブのみで行われます。

%dw 1.0
%output application/csv header=false
---
payload[3..-1] map {
    productId:$[0],
    date: $[1]
}

それが役に立てば幸い。

于 2016-09-02T10:01:44.063 に答える
-1

このリンクは役立つかもしれません

https://developer.mulesoft.com/docs/dataweave

null値をスキップするには、上記のドキュメントで以下のコードスニペットについて読んでください

%output application/xml skipNullOn="everywhere"

于 2015-10-28T10:19:31.230 に答える