Share via


System.Timestamp() (Stream Analytics)

Un horodatage est associé à chaque événement à chaque étape de la requête dans Azure Stream Analytics. System.Timestamp() est une propriété système qui peut être utilisée pour récupérer l’horodatage de l’événement.

Ci-dessous, nous décrivons comment Azure Stream Analytics affecte des horodatages aux événements.

Horodatage des événements d’entrée

L’horodatage de l’événement d’entrée peut être défini par la valeur de colonne (ou une expression) spécifiée dans la clause TIMESTAMP BY :

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

Si une clause TIMESTAMP BY n’est pas spécifiée pour une entrée donnée, l’heure d’arrivée de l’événement est utilisée comme horodatage. Par exemple, l’heure en file d’attente de l’événement sera utilisée en cas d’entrée Event Hub.

Horodatage d’événement résultant

Lorsque des calculs sont effectués, l’horodatage de l’événement résultant est l’heure logique la plus ancienne à laquelle ce résultat a pu être déterminé.

Examinons comment les opérations de requête de base dans Azure Stream Analytics (filtres, projections, agrégations et jointures) génèrent les horodatages du résultat.

Projection

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

Les projections ne modifient pas l’horodatage de l’événement. L’horodatage du résultat est identique à l’horodatage de l’entrée.

Filter

SELECT *  
FROM input  
WHERE prop1 > prop2  
  

Les filtres ne modifient pas l’horodatage de l’événement. L’horodatage du résultat est identique à l’horodatage de l’entrée.

FENÊTRE GROUP BY au fil du temps

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

L’horodatage du résultat de l’agrégat est la fin de la fenêtre de temps à laquelle ce résultat correspond. Consultez les articles Fenêtrage (Azure Stream Analytics) décrivant différents types de fenêtres dans Azure Stream Analytics.

INNER JOIN

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

Une jointure interne produit des résultats qui correspondent à des paires d’événements correspondantes d’input1 et input2.

L’événement qui représente la correspondance de l’événement e1 de input1 et e2 de input2 est horodaté par la dernière des horodatages de e1 et e2.

JOINTURE EXTERNE GAUCHE

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

Une jointure externe gauche produit des résultats de deux types. Certains correspondent à une paire d’événements correspondante d’input1 et input2 ; d’autres correspondent simplement à un événement d’input1 et indiquent qu’aucun événement correspondant à input2 n’a été trouvé.

Les événements qui représentent une correspondance (avec input1 et input2) sont horodatés par la dernière des horodatages des entrées correspondantes (comme dans le cas de LA JOINTURE INNER ci-dessus).

Les événements qui représentent des non-correspondances (input2 a la valeur NULL) sont horodatés par l’heure logique la plus récente à laquelle un événement input2 correspondant a pu se produire. Par instance, dans l’exemple ci-dessus, il s’agit de l’horodatage d’input1 + 10 minutes.