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.