2017-05-24 50 views
0

我有一個Stream分析作業,它從外部來源獲取數據(我對數據格式化方式沒有發言權)。我試圖將數據導入到我的數據湖中,並將其存儲爲JSON。這工作正常,但我也想獲得在CSV輸出,這是我有麻煩。Stream Analytics GetArrayElements as String

由於輸入數據有一個數組作爲列之一,所以當以JSON導入時它會識別它並提供正確的數據,即將它們放在括號[A,B,C]中,但是當我在CSV中使用它時獲得表示爲「Array」一詞的列。我想我會將它轉換爲XML,使用STUFF並將它們放在一行中,但它不喜歡在CROSS APPLY中使用SELECT語句。

是否有人使用Stream Analytics將數據導入到CSV中,它具有數組列?如果是這樣,你是如何設法導入數組值的?

的樣本數據:

[ 
    {"GID":"10","UID":1,"SID":"5400.0","PG:["75aef","e5f8e"]}, 
    {"GID":"10","UID":2,"SID":"4400.0","PG:["75aef","e5f8e","6d793"]} 
] 

PG是我試圖提取列,所以輸出CSV應該是這個樣子。

GID|UID|SID|PG 
10|1|5400.0|75aef,e5f8e 
10|2|4400.0|75aef,e5f8e,6d793 

這是我使用的查詢,

SELECT 
    D.GID , 
    D.UID , 
    D.SID , 
    A.ArrayValue 
FROM 
    dummy AS D 
    CROSS APPLY GetArrayElements(D.PG) AS A 

正如你能想象,這讓我產生這種格式。

GID|UID|SID|PG 
10|1|5400.0|75aef 
10|1|5400.0|e5f8e 
10|2|4400.0|75aef 
10|2|4400.0|e5f8e 
10|2|4400.0|6d793 
+0

我相信你可以用javascript udf(最近發佈)做到這一點,但沒有嘗試過自己。值得一看。 –

+0

謝謝@PeteM,我遵循了你的建議。 :) – PaulFrancis

回答

1

皮特中號說,你可以嘗試創建一個JavaScript user-defined function到一個數組轉換爲字符串,然後你可以在查詢中調用這個用戶定義的函數。

JavaScript的用戶定義函數:在查詢

function main(inputobj) { 
    var outstring = inputobj.toString(); 
    return outstring; 
} 

呼叫UDF:

SELECT 
    TI.GID,TI.UID,TI.SID,udf.extractdatafromarray(TI.PG) 
FROM 
    [TEST-SA-DEMO-BLOB-Input] as TI 

結果:

enter image description here

+0

這也是我最終做的。謝謝 :) – PaulFrancis

相關問題