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.