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.