Delen via


System.Timestamp() (Stream Analytics)

Aan elke gebeurtenis in elke fase van de query in Azure Stream Analytics is een tijdstempel gekoppeld. System.Timestamp() is een systeemeigenschap die kan worden gebruikt om de tijdstempel van de gebeurtenis op te halen.

Hieronder wordt beschreven hoe Azure Stream Analytics tijdstempels toewijst aan gebeurtenissen.

Tijdstempel van invoerevenementen

Tijdstempel van de invoer-gebeurtenis kan worden gedefinieerd op basis van de kolomwaarde (of een expressie) die is opgegeven in de component TIMESTAMP BY :

SELECT System.Timestamp() t   
FROM input   
TIMESTAMP BY MyTimeField  
  

Als er geen TIMESTAMP BY-component is opgegeven voor een bepaalde invoer, wordt de aankomsttijd van de gebeurtenis gebruikt als een tijdstempel. De enqueued-tijd van de gebeurtenis wordt bijvoorbeeld gebruikt in het geval van Event Hub-invoer.

Tijdstempel van resulterende gebeurtenis

Wanneer berekeningen worden uitgevoerd, is de tijdstempel van de resulterende gebeurtenis het vroegste logische tijdstip waarop dit resultaat kan worden bepaald.

Laten we eens kijken hoe de basisquerybewerkingen in Azure Stream Analytics (filters, projecties, aggregaties en joins) de tijdstempels voor het resultaat genereren.

Projectie

SELECT  
      Prop1,  
      Prop2,  
      Prop3 - Prop4 / 12,
      System.Timestamp() t  
FROM input  
  

Projecties veranderen de tijdstempel van de gebeurtenis niet, de tijdstempel van het resultaat is hetzelfde als de tijdstempel van de invoer.

Filter

SELECT *  
FROM input  
WHERE prop1 > prop2  
  

Filters wijzigen de tijdstempel van de gebeurtenis niet. De tijdstempel van het resultaat is hetzelfde als de tijdstempel van de invoer.

GROUP BY in tijdvenster

SELECT  
      userId,  
      AVG(prop1),  
      SUM(prop2),  
      System.Timestamp() t  
FROM input  
GROUP BY TumblingWindow(minute, 1), userId  
  

Het tijdstempel van het resultaat van de aggregatie is het einde van het tijdvenster waarmee dit resultaat overeenkomt. Raadpleeg windowing (Azure Stream Analytics) artikelen waarin verschillende venstertypen in Azure Stream Analytics worden beschreven.

INNER JOIN

SELECT  
      System.Timestamp()  
FROM input1  
JOIN input2  
ON DATEDIFF(minute, input1, input2) BETWEEN 0 AND 10  
  

Een inner join produceert resultaten die overeenkomen met overeenkomende paren van gebeurtenissen uit input1 en input2.

De gebeurtenis die de overeenkomst van gebeurtenis e1 uit input1 en e2 van invoer2 vertegenwoordigt, wordt voorzien van de laatste tijdstempels van e1 en e2.

LEFT OUTER JOIN

SELECT  
      System.Timestamp()  
FROM input1  
LEFT JOIN input2  
ON DATEDIFF(minute, input1, input2) BETWEEN -2 AND 10  
  

Een left-outer join produceert resultaten van twee typen. Sommige komen overeen met een overeenkomend paar gebeurtenissen uit input1 en input2; andere komen overeen met alleen een gebeurtenis uit input1 en geven aan dat er geen overeenkomende gebeurtenis uit input2 is gevonden.

De gebeurtenissen die een overeenkomst vertegenwoordigen (heeft zowel invoer1 als invoer2) worden tijdstempels met het laatste van de tijdstempels van de overeenkomende invoer (zoals in het geval van de INNER JOIN hierboven).

De gebeurtenissen die niet-overeenkomsten vertegenwoordigen (input2 is NULL) worden voorzien van een tijdstempel op basis van het laatste logische tijdstip waarop een overeenkomende invoer2-gebeurtenis kan hebben plaatsgevonden. In het bovenstaande voorbeeld is dit bijvoorbeeld het tijdstempel van invoer1 + 10 minuten.