System.Timestamp() (Stream Analytics)

Każde zdarzenie na każdym etapie zapytania w usłudze Azure Stream Analytics ma skojarzony znacznik czasu. System.Timestamp() to właściwość systemowa, która może służyć do pobierania sygnatury czasowej zdarzenia.

Poniżej opisano, jak usługa Azure Stream Analytics przypisuje znaczniki czasu do zdarzeń.

Sygnatura czasowa zdarzeń wejściowych

Znacznik czasu 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 jest określona dla danego danych wejściowych, czas przybycia zdarzenia jest używany jako sygnatura czasowa. Na przykład czas w kolejce zdarzenia będzie używany w przypadku danych wejściowych centrum zdarzeń.

Wynikowy znacznik czasu zdarzenia

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

Przyjrzyjmy się, w jaki sposób podstawowe operacje zapytań w usłudze 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ą znacznika czasu zdarzenia, sygnatura czasowa wyniku jest taka sama jak sygnatura czasowa danych wejściowych.

Filtr

SELECT *  
FROM input  
WHERE prop1 > prop2  
  

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

GRUPUJ WEDŁUG w przedziale czasu

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

Sygnatura czasowa wyniku agregacji to koniec przedziału czasu, do którego odpowiada ten wynik. Zobacz artykuły dotyczące okien (Azure Stream Analytics) opisujące różne typy okien w usłudze 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ą pasującym parom zdarzeń z input1 i input2.

Zdarzenie reprezentujące dopasowanie zdarzenia e1 z danych wejściowych1 i e2 z input2 jest znacznikami czasu najnowszymi znacznikami czasu e1 i e2.

LEWE SPRZĘŻENIA ZEWNĘTRZNE

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

Sprzężenia lewej zewnętrznej generuje wyniki dwóch typów. Niektóre odpowiadają pasującej parze zdarzeń z 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ą znacznikami czasu najnowszymi znacznikami czasu pasujących danych wejściowych (tak jak w przypadku sprzężenia wewnętrznego powyżej).

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