2016-07-29 57 views
0

我有一個CSV這樣的:嵌套CSV - 騾DataWeave

data1,data2,data3;dataa;datab;datac;datax,datay,dataz 
data1,data2,data3;dataa;datab;datac;datax,datay,dataz 
data1,data2,data3;dataa;datab;datac;datax,datay,dataz 

我用spliter處理一行記錄線,進一步我用splitBy「」在dataweave的記錄轉換成地圖。但是,我怎麼能做到另一個層次的分裂「;」 ? SplitBy不允許多個分隔符,因此數據織物中的CSV類型也是如此。

最後,我希望有一個JSON是這樣的:

{ 
    "1":"data1", 
    "2":"data2", 
    "3":{ 
     "a":"dataa", 
     "b":"datab", 
     "c":"datac" 
    }, 
    "x":"datax", 
    "y":"datay", 
    "z":"dataz " 
} 

有什麼想法?

+0

預期的JSON結果無效。你是這個意思嗎? { 「1」: 「DATA1」, 「2」: 「數據2」, 「3」:{ 「一個」: 「DataA的」, 「B」: 「數據B」, 「C」: 「DATAC」 }, 「X」: 「數據X」, 「Y」: 「DATAY」, 「Z」: 「DATAZ」 } –

+0

哎呀,我的錯字。你是對的 。 – gnanagurus

回答

1

我想觀察一下,你的JSON例子結構不好! 在這個JSON的第四個元素是一個對象,它沒有一個鍵,只值... 首先,你應該驗證你的結束JSON。您有效的JSON的 例子: enter image description here

當U驗證您的JSON,我會盡力在convering您的CSV數據到JSON幫助。

+0

我修復了數據,你現在可以看看嗎? – gnanagurus

3

嘗試下面的DataWeave代碼:

%dw 1.0 
%output application/json 
--- 
payload map { 
    "1": $[0], 
    "2": $[1], 
    "3": using (detail = $[2] splitBy ";") { 
     a: detail[1], 
     b: detail[2], 
     c: detail[3] 
    }, 
    x: $[3], 
    y: $[4], 
    z: $[5] 
} 

注:

  • 我修改的輸入數據分離datacdatax。與,如更換;字符:...;datab;datac,datax,...
  • 我用文件連接器來讀取CSV文件,並直接在處理它DataWeave變壓器(不使用分配器
+0

我主要使用分離器,因爲它一行一行地分割記錄。此外,我使用數據編輯處理記錄。但根據你的建議,我能達到同樣的效果嗎?數據編織可以照顧流媒體嗎?基本上,在我的用例中文件大小不確定 – gnanagurus