2017-05-24 12 views
0

私は、外部ソースからデータを取得するStream分析ジョブを持っています(データのフォーマット方法については言及していません)。私はJSONとして保存するデータ湖にデータをインポートしようとしています。これは正常に動作しますが、私はCSVで出力を得たいと思っています。これが問題の原因です。ストリーム解析GetArrayElements as String

入力データが列の1つとして配列されているため、JSONで読み込むと、それが認識され、正しいデータが提供されます。つまり、[A、B、C] 「Array」という単語として表される列を取得します。私はそれをXMLに変換し、STUFFを使用して1行で取得すると考えましたが、CROSS APPLYでSELECTステートメントを使用するのは嫌です。

ストリームアナリティクスで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

ピートMは、文字列に配列を変換するために、そしてあなたがあなたのクエリでこのユーザー定義関数を呼び出すことができ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

関連する問題