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 进行常规转换,它将返回空值

这是我在 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/regex 表达式吗?如何在 Dataweave 中使用忽略的行?

我们可以使用 groovy/regex 跳过前 2 行吗?

我正面临以下 groovy 的性能问题。Mule 甚至需要花费太多时间来转换 1 MB 文件。有没有其他解决方案?

4

3 回答 3

0

我使用 Groovy 跳过了前两行。此脚本直接获取逗号分隔值

 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 string在 groovy 之前使用

于 2015-11-05T12:18:19.453 回答
0

我知道已经晚了。如果还在等待答案,试试这个。它仅在 dataweave 中完成。

%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

并阅读上述文档中的以下代码片段以跳过空值

% 输出应用程序/xml skipNullOn="everywhere"

于 2015-10-28T10:19:31.230 回答