System.Timestamp() (Stream Analytics)

Cada evento en cada fase de la consulta en Azure Stream Analytics tiene asociada una marca de tiempo. System.Timestamp() es una propiedad del sistema que se puede usar para recuperar la marca de tiempo del evento.

A continuación, se describe cómo Azure Stream Analytics asigna marcas de tiempo a eventos.

Marca de tiempo de eventos de entrada

La marca de tiempo del evento de entrada se puede definir mediante el valor de columna (o una expresión) especificado en la cláusula TIMESTAMP BY :

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

Si no se especifica una cláusula TIMESTAMP BY para una entrada determinada, la hora de llegada del evento se usa como marca de tiempo. Por ejemplo, la hora puesta en cola del evento se usará en el caso de la entrada del centro de eventos.

Marca de tiempo del evento resultante

Cuando se realizan cálculos, la marca de tiempo del evento resultante es la hora lógica más temprana en la que se podría determinar este resultado.

Veamos cómo las operaciones de consulta básicas de Azure Stream Analytics (filtros, proyecciones, agregaciones y combinaciones) generan las marcas de tiempo para el resultado.

Proyección

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

Las proyecciones no modifican la marca de tiempo del evento, la marca de tiempo del resultado es la misma que la marca de tiempo de la entrada.

Filter

SELECT *  
FROM input  
WHERE prop1 > prop2  
  

Los filtros no modifican la marca de tiempo del evento. La marca de tiempo del resultado es la misma que la marca de tiempo de la entrada.

GROUP BY a lo largo del período de tiempo

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

La marca de tiempo del resultado del agregado es el final del período de tiempo al que corresponde este resultado. Consulte los artículos sobre ventanas (Azure Stream Analytics) que describen diferentes tipos de ventanas en Azure Stream Analytics.

INNER JOIN

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

Una combinación interna genera resultados que corresponden a pares coincidentes de eventos de input1 y input2.

El evento que representa la coincidencia del evento e1 de input1 y e2 de input2 está marca de tiempo por la última de las marcas de tiempo de e1 y e2.

COMBINACIÓN EXTERNA IZQUIERDA

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

Una combinación externa izquierda genera resultados de dos tipos. Algunos corresponden a un par coincidente de eventos de input1 y input2; otros corresponden solo a un evento de input1 e indican que no se encontró ningún evento coincidente de input2.

Los eventos que representan una coincidencia (tienen input1 y input2) se marcan por el último de las marcas de tiempo de las entradas coincidentes (como en el caso de INNER JOIN anterior).

Los eventos que representan no coincidencias (input2 es NULL) se marcan por la hora lógica más reciente en la que se podría haber producido un evento input2 coincidente. Por ejemplo, en el ejemplo anterior, es la marca de tiempo de input1 + 10 minutos.