Поделиться через


System.Timestamp()

✅ Azure Stream Analytics

Каждое событие на каждом этапе запроса в Azure Stream Analytics имеет метку времени, связанную с ней. System.Timestamp() — это системное свойство, которое можно использовать для получения метки времени события.

Ниже описано, как Azure Stream Analytics назначает метки времени событиям.

Метка времени событий ввода

Метка времени входного события может быть определена значением столбца (или выражением), указанным в предложении TIMESTAMP BY :

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

Если предложение TIMESTAMP BY не указано для заданных входных данных, время прибытия события используется в качестве метки времени. Например, время, затраченное на событие, будет использоваться в случае ввода концентратора событий.

Результирующая метка времени события

При выполнении вычислений метка времени результирующего события является самым ранним логическим временем, в котором можно определить этот результат.

Давайте рассмотрим, как базовые операции запросов в Azure Stream Analytics (фильтры, проекции, агрегаты и соединения) создают метки времени для результата.

Projection

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

Проекции не изменяют метку времени события, метка времени результата совпадает с меткой времени входных данных.

Filter

SELECT *  
FROM input  
WHERE prop1 > prop2  
  

Фильтры не изменяют метку времени события. Метка времени результата совпадает с меткой времени входных данных.

С течением времени GROUP BY

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

Метка времени результата агрегата — конец периода времени, к которому соответствует этот результат. См. статьи о окне, описывающие различные типы окон в Azure Stream Analytics.

INNER JOIN

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

Внутреннее соединение создает результаты, соответствующие соответствующим парам событий из input1 и input2.

Событие, представляющее совпадение события e1 из входных данных1 и e2 из input2, заметен последними метками времени e1 и e2.

ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

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

Левое внешнее соединение создает результаты двух типов. Некоторые соответствуют паре событий из input1 и input2; другие соответствуют только событию из input1 и указывают, что не найдено соответствующее событие из input2.

События, представляющие совпадение (имеет входные данные1 и input2), заметки времени последними метками времени совпадающих входных данных (как и в случае с внутренним присоединением выше).

События, представляющие несоотвеченные (input2 is NULL), заметятся по последнему логическому времени, в течение которого может произойти соответствующее событие input2. Например, в приведенном выше примере это метка времени ввода1 + 10 минут.