Delen via


System.Timestamp()

✅ Azure 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 invoer van gebeurtenissen

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

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

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

Resulterende tijdstempel van 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.

Projection

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

Projecties wijzigen 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 de loop van het tijdvenster

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

De tijdstempel van het resultaat van de statistische functie is het einde van het tijdvenster waarop dit resultaat overeenkomt. Zie windowing-artikelen met een beschrijving van verschillende venstertypen in Azure Stream Analytics.

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 gebeurtenissen van invoer1 en invoer2.

De gebeurtenis die de overeenkomst aangeeft van gebeurtenis e1 uit input1 en e2 van invoer2, wordt tijdstempel gegeven door 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 van invoer1 en invoer2; andere komen overeen met alleen een gebeurtenis uit invoer1 en geven aan dat er geen overeenkomende gebeurtenis uit invoer2 is gevonden.

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

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