System.Timestamp() (Stream Analytics)
Jedem Ereignis in jeder Phase der Abfrage in Azure Stream Analytics ist ein Zeitstempel zugeordnet. System.Timestamp() ist eine Systemeigenschaft, die zum Abrufen des Zeitstempels des Ereignisses verwendet werden kann.
Im Folgenden wird beschrieben, wie Azure Stream Analytics Ereignissen Zeitstempel zuweist.
Zeitstempel für Eingabeereignisse
Der Zeitstempel des Eingabeereignisses kann durch einen Spaltenwert (oder einen Ausdruck) definiert werden, der in der TIMESTAMP BY-Klausel angegeben ist:
SELECT System.Timestamp() t
FROM input
TIMESTAMP BY MyTimeField
Wenn keine TIMESTAMP BY-Klausel für eine bestimmte Eingabe angegeben ist, wird die Ankunftszeit des Ereignisses als Zeitstempel verwendet. Beispielsweise wird die in die Warteschlange eingereihte Zeit des Ereignisses im Falle einer Event Hub-Eingabe verwendet.
Zeitstempel des resultierenden Ereignisses
Wenn Berechnungen ausgeführt werden, ist der Zeitstempel des resultierenden Ereignisses der früheste logische Zeitpunkt, zu dem dieses Ergebnis bestimmt werden konnte.
Sehen wir uns an, wie die grundlegenden Abfragevorgänge in Azure Stream Analytics (Filter, Projektionen, Aggregationen und Verknüpfungen) die Zeitstempel für das Ergebnis generieren.
Projektion
SELECT
Prop1,
Prop2,
Prop3 - Prop4 / 12,
System.Timestamp() t
FROM input
Projektionen ändern den Zeitstempel des Ereignisses nicht. Der Zeitstempel des Ergebnisses entspricht dem Zeitstempel der Eingabe.
Filter
SELECT *
FROM input
WHERE prop1 > prop2
Filter ändern den Zeitstempel des Ereignisses nicht. Der Zeitstempel des Ergebnisses entspricht dem Zeitstempel der Eingabe.
GROUP BY im Zeitfenster
SELECT
userId,
AVG(prop1),
SUM(prop2),
System.Timestamp() t
FROM input
GROUP BY TumblingWindow(minute, 1), userId
Der Zeitstempel des Ergebnisses des Aggregats ist das Ende des Zeitfensters, dem dieses Ergebnis entspricht. Informationen zu verschiedenen Fenstertypen in Azure Stream Analytics finden Sie in den Artikeln zur Fenstererstellung (Azure Stream Analytics).
INNERER JOIN
SELECT
System.Timestamp()
FROM input1
JOIN input2
ON DATEDIFF(minute, input1, input2) BETWEEN 0 AND 10
Eine innere Verknüpfung erzeugt Ergebnisse, die übereinstimmenden Ereignispaaren aus input1 und input2 entsprechen.
Das Ereignis, das die Übereinstimmung von Ereignis e1 aus input1 und e2 von input2 darstellt, wird durch den neuesten Zeitstempel von e1 und e2 zeitstempelt.
LINKER ÄUßERER JOIN
SELECT
System.Timestamp()
FROM input1
LEFT JOIN input2
ON DATEDIFF(minute, input1, input2) BETWEEN -2 AND 10
Eine links-äußere Verknüpfung erzeugt Ergebnisse von zwei Typen. Einige entsprechen einem übereinstimmenden Ereignispaar aus input1 und input2; Andere entsprechen nur einem Ereignis von input1 und geben an, dass kein übereinstimmende Ereignis von input2 gefunden wurde.
Die Ereignisse, die eine Übereinstimmung darstellen (hat sowohl input1 als auch input2), werden durch den neuesten Zeitstempel der übereinstimmenden Eingaben (wie im Fall von INNER JOIN oben) zeitstempelt.
Die Ereignisse, die Nichtübereinstimmungen darstellen (input2 ist NULL), werden mit dem Zeitstempel der letzten logischen Zeit versehen, zu der ein übereinstimmendes input2-Ereignis aufgetreten sein könnte. Für instance ist es im obigen Beispiel der Zeitstempel von input1 + 10 Minuten.