2017-05-24 5 views
0

Ich habe einen Stream-Analyse-Job, der die Daten von einer externen Quelle bezieht (ich habe kein Mitspracherecht darüber, wie die Daten formatiert werden). Ich versuche, die Daten in meinen Datensee zu importieren und als JSON zu speichern. Das funktioniert gut, aber ich möchte auch die Ausgabe in einer CSV, das ist, wo ich Probleme habe.Stream Analytics GetArrayElements als String

Da die Eingabedaten ein Array als eine der Spalten haben, erkennt es beim Importieren in JSON es und stellt die richtigen Daten zur Verfügung, dh platziert sie in Klammern [A, B, C], aber wenn ich es in CSV I verwende Holen Sie die Spalte als das Wort "Array" dargestellt. Ich dachte, ich würde es in XML umwandeln, STUFF verwenden und sie in einer Zeile erhalten, aber es mag nicht, eine SELECT-Anweisung in einem CROSS APPLY zu verwenden.

Hat jemand mit Stream Analytics gearbeitet, der Daten in CSV importiert, die eine Array-Spalte haben? Wenn ja, wie haben Sie es geschafft, die Array-Werte zu importieren?

Beispieldaten:

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

PG ist die Spalte, die ich zu extrahieren versuchen, so dass der Ausgang CSV aussehen sollte etwas.

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

Dies ist die Abfrage ich verwende,

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

Wie man sich vorstellen kann, das gibt mir in diesem Format führt.

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

Ich glaube, Sie könnten dies mit einem Javascript-udf tun (kürzlich veröffentlicht), aber ich habe es selbst nicht versucht. Einen Blick wert. –

+0

Dank @PeteM, ich folgte Ihrem Rat. :) – PaulFrancis

Antwort

1

Als Pete M sagte, könnten Sie versuchen, eine JavaScript user-defined function zu erstellen ein Array in eine Zeichenfolge zu konvertieren, und dann können Sie diese benutzerdefinierte Funktion in der Abfrage aufrufen.

JavaScript benutzerdefinierte Funktion:

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

Anruf UDF in Abfrage:

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

Ergebnis:

enter image description here

+0

Dies ist, was ich auch getan habe. Vielen Dank :) – PaulFrancis

Verwandte Themen