Omówienie funkcji okien
Typowym celem przetwarzania strumienia jest agregowanie zdarzeń w interwały czasowe lub okna. Aby na przykład policzyć liczbę wpisów w mediach społecznościowych na minutę lub obliczyć średnie opady na godzinę.
Usługa Azure Stream Analytics oferuje natywną obsługę pięciu rodzajów funkcji okien czasowych. Te funkcje umożliwiają definiowanie interwałów czasowych, w których dane są agregowane w zapytaniu. Obsługiwane funkcje okien to Tumbling, Hopping, Sliding, Session i Snapshot.
Tumbling
Funkcje okien stałoczasowych segmentują strumień danych w ciągłej serii stałych, nienakładających się segmentów czasowych i działają na nich. Zdarzenia nie mogą należeć do więcej niż jednego okna wirowania.
Przykład okna wirowania reprezentowany przez następujące zapytanie znajduje maksymalną wartość odczytu w każdym jednominutowym oknie. Funkcje okien są stosowane w zadaniach usługi Stream Analytics przy użyciu klauzuli GROUP BY składni zapytania. Klauzula GROUP BY
w poniższym zapytaniu zawiera TumblingWindow()
funkcję, która określa rozmiar okna jednominutowego.
SELECT DateAdd(minute,-1,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY TumblingWindow(minute, 1)
Hopping
Model funkcji okna przeskoku zaplanowane nakładające się okna, skoki do przodu w czasie o ustalony okres. Najłatwiej jest traktować je jako okna wirujące, które mogą się nakładać i być emitowane częściej niż rozmiar okna. W rzeczywistości, wirujące okna są po prostu okno przeskoku, którego hop
jest równe jego size
. W przypadku korzystania z okien przeskoku zdarzenia mogą należeć do więcej niż jednego zestawu wyników okna.
Aby utworzyć okno przeskoku, należy określić trzy parametry. Pierwszy parametr wskazuje jednostkę czasu, taką jak sekunda, minuta lub godzina. Poniższy parametr ustawia rozmiar okna, który określa, jak długo trwa każde okno. Ostatnim wymaganym parametrem jest rozmiar przeskoku, który określa, ile każdego okna przesuwa się do przodu względem poprzedniego. Można również użyć opcjonalnego czwartego parametru oznaczającego rozmiar przesunięcia.
Poniższe zapytanie demonstruje użycie elementu , w HoppingWindow()
którym timeunit
ustawiono wartość second
. Wartość windowsize
wynosi 60 sekund, a wartość hopsize
wynosi 30 sekund. To zapytanie generuje zdarzenie co 30 sekund zawierające maksymalną wartość odczytu, która wystąpiła w ciągu ostatnich 60 sekund.
SELECT DateAdd(second,-60,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY HoppingWindow(second, 60, 30)
Przesuwne
Przesuwane okna generują zdarzenia dla punktów w czasie, gdy zawartość okna rzeczywiście się zmienia. Ten model funkcji ogranicza liczbę okien, które należy wziąć pod uwagę. Usługa Azure Stream Analytics generuje zdarzenia tylko dla tych punktów w czasie, gdy zdarzenie wszedł lub zakończyło okno. W związku z tym każde okno zawiera co najmniej jedno zdarzenie. Zdarzenia w oknach przesuwnych mogą należeć do więcej niż jednego okna przesuwanego, podobnie jak okna przeskoku.
Poniższe zapytanie używa funkcji do znalezienia SlidingWindow()
maksymalnej wartości odczytu w każdym jednominutowym oknie, w którym wystąpiło zdarzenie.
SELECT DateAdd(minute,-1,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY SlidingWindow(minute, 1)
Sesja
Funkcje okna sesji łączą ze sobą zdarzenia, które docierają o podobnych porach, odfiltrując okresy, w których nie ma danych. Ma trzy podstawowe parametry: limit czasu, maksymalny czas trwania i klucz partycjonowania (opcjonalnie).
Wystąpienie pierwszego zdarzenia uruchamia okno sesji. Załóżmy, że inne zdarzenie występuje w określonym przedziale czasu od ostatniego pozyskanego zdarzenia. W takim przypadku okno zostanie rozszerzone w celu włączenia nowego zdarzenia. Jeśli jednak w określonym przedziale czasu nie wystąpią żadne inne zdarzenia, okno zostanie zamknięte na przekroczeniu limitu czasu. Jeśli zdarzenia będą się powtarzać w określonym przedziale czasu, okno sesji zostanie rozszerzone do momentu osiągnięcia maksymalnego czasu trwania.
Poniższe zapytanie mierzy długość sesji użytkownika, tworząc SessionWindow
dane przesyłane strumieniem kliknięć z wartością timeoutsize
20 sekund i maximumdurationsize
60 sekund.
SELECT DateAdd(second,-60,System.TimeStamp) AS WindowStart,
System.TimeStamp() AS WindowEnd,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY SessionWindow(second, 20, 60)
Snapshot
Okna migawek grupuje zdarzenia według identycznych wartości znacznika czasu. W przeciwieństwie do innych typów okien, określona funkcja okna nie jest wymagana. Możesz stosować okno migawki, określając System.Timestamp()
funkcję w klauzuli GROUP BY
zapytania.
Na przykład następujące zapytanie znajduje maksymalną wartość odczytu dla zdarzeń, które występują dokładnie w tym samym czasie.
SELECT System.TimeStamp() AS WindowTime,
MAX(Reading) AS MaxReading
INTO
[output]
FROM
[input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY System.Timestamp()
System.Timestamp()
Element jest traktowany w klauzuli GROUP BY
jako definicja okna migawki, ponieważ grupuje zdarzenia w oknie na podstawie równości sygnatur czasowych.