Gibt es eine Möglichkeit, das Postgres-Äquivalent von array_agg oder string_agg in Stream Analytics zu tun? Ich habe Daten, die alle paar Sekunden kommen, und möchte die Anzahl der Werte innerhalb eines Zeitrahmens erhalten.Azure stream analytics array_agg entspricht?
Daten:
{time:12:01:01,name:A,location:X,value:10}
{time:12:01:01,name:B,location:X,value:9}
{time:12:01:02,name:C,location:Y,value:5}
{time:12:01:02,name:B,location:Y,value:4}
{time:12:01:03,name:B,location:Z,value:2}
{time:12:01:03,name:A,location:Z,value:3}
{time:12:01:06,name:B,location:Z,value:4}
{time:12:01:06,name:C,location:Z,value:7}
{time:12:01:08,name:B,location:Y,value:1}
{time:12:01:13,name:B,location:X,value:8}
Mit einem Schiebefenster von 2 Sekunden, ich gruppieren möchten die Daten folgendes sehen:
12:01:01, 2 events, 9.5 avg, 2 distinct names, 1 distinct location, nameA:1, nameB:1, locationX:1
12:01:02, 4 events, 7 avg, 3 distinct names, 2 distinct location, nameA:1, nameB:2,nameC:1,locationX:1,locationY:1
12:01:03...
12:01:06...
...
Ich kann die Anzahl der Ereignisse, Durchschnitt erhalten, und distinct zählt ohne Problem. Ich benutze ein Fenster sowie eine With-Anweisung, um am Zeitstempel teilzunehmen, um die aggregierten Zählungen für diesen Zeitstempel zu erhalten. Ich habe Probleme herauszufinden, wie ich die Gesamtanzahl nach Name und Ort ermitteln kann, hauptsächlich weil ich nicht weiß, wie man Zeichenketten in Azure aggregiert.
Es gibt keine festgelegte Liste von Namen und Orten, daher muss die Abfrage etwas dynamisch sein. Es ist in Ordnung, wenn die Anzahl in einem Objekt innerhalb einer einzelnen Abfrage liegt, ein Prozess kann später analysieren, um individuelle Zählungen zu erhalten.