System.Timestamp() (Stream Analytics)

Z każdym zdarzeniem na każdym etapie zapytania w Azure Stream Analytics jest skojarzony znacznik czasu. System.Timestamp() to właściwość systemowa, która może służyć do pobierania znacznika czasu zdarzenia.

Poniżej opisano sposób przypisywania Azure Stream Analytics do zdarzeń.

Sygnatura czasowa zdarzeń wejściowych

Sygnaturę czasową zdarzenia wejściowego można zdefiniować za pomocą wartości kolumny (lub wyrażenia) określonej w klauzuli TIMESTAMP BY :

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

Jeśli klauzula TIMESTAMP BY nie zostanie określona dla danych wejściowych, czas nadejścia zdarzenia będzie używany jako sygnatura czasowa. Na przykład w przypadku danych wejściowych centrum zdarzeń zostanie użyty czas w kolejkach zdarzenia.

Znacznik czasu zdarzenia wynikowego

Podczas wykonywania obliczeń sygnatura czasowa wynikowego zdarzenia jest najwcześniejszym czasem logicznym, w którym można określić ten wynik.

Przyjrzyjmy się, jak podstawowe operacje zapytań w Azure Stream Analytics (filtry, projekcje, agregacje i sprzężenia) generują znaczniki czasu dla wyniku.

Projekcja

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

Projekcje nie zmieniają sygnatury czasowej zdarzenia. Sygnatura czasowa wyniku jest taka sama jak sygnatura czasowa danych wejściowych.

Filtr

SELECT *  
FROM input  
WHERE prop1 > prop2  
  

Filtry nie zmieniają sygnatury czasowej zdarzenia. Sygnatura czasowa wyniku jest taka sama jak sygnatura czasowa danych wejściowych.

GRUPUJ WEDŁUG w oknie czasu

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

Sygnatura czasowa wyniku agregacji to koniec okna czasowego, do którego odnosi się ten wynik. Zobacz artykuły dotyczące obsługi okien (Azure Stream Analytics) opisujące różne typy okien w Azure Stream Analytics.

SPRZĘŻENIE WEWNĘTRZNE

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

Sprzężenie wewnętrzne generuje wyniki, które odpowiadają parom pasujących zdarzeń z danych wejściowych input1 i input2.

Zdarzenie reprezentujące dopasowanie zdarzenia e1 z danych wejściowych input1 i e2 z input2 jest oznaczane znacznikiem czasu najnowszych znaczników czasu e1 i e2.

LEWE SPRZĘŻENIE ZEWNĘTRZNE

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

Lewe sprzężenie zewnętrzne daje wyniki dwóch typów. Niektóre odpowiadają pasującej parze zdarzeń z danych wejściowych input1 i input2; Inne odpowiadają tylko zdarzeniu z input1 i wskazują, że nie znaleziono pasującego zdarzenia z input2.

Zdarzenia reprezentujące dopasowanie (ma zarówno input1, jak i input2) są oznaczane znacznikiem czasu najnowszymi znacznikami czasu pasujących danych wejściowych (jak w przypadku sprzężenia WEWNĘTRZNEGO powyżej).

Zdarzenia reprezentujące niedopasowane dane (input2 ma wartość NULL) są oznaczane znacznikiem czasu najnowszy czas logiczny, w którym mogło zostać wystąpiło zgodne zdarzenie input2. Na przykład w powyższym przykładzie jest to sygnatura czasowa input1 + 10 minut.