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.