Omówienie funkcji okien
Typowym celem przetwarzania strumienia jest agregowanie zdarzeń w interwałach czasowych lub oknach. 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, sessioni snapshot.
Akrobatyka
funkcje okien zbijających segmentują strumień danych w ciągłą serię segmentów czasowych o stałych rozmiarach, które się nie nakładają, i pracują na nich. Zdarzenia nie mogą należeć do więcej niż jednego okna przesuwanego.
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 funkcję TumblingWindow(), która określa rozmiar okna minuty.
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)
skakanie
Okienka przesuwające się modelu funkcji okiennych planowane nachodzące się przedziały czasowe, przeskakujące do przodu 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 okna wirujące są po prostu oknem przeskoku, którego hop jest równa size. W przypadku korzystania z hopping windows 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, o ile każde okno przesuwa się do przodu w stosunku do poprzedniego. Można również użyć opcjonalnego czwartego parametru oznaczającego rozmiar przesunięcia.
Poniższe zapytanie demonstruje użycie HoppingWindow(), w którym timeunit jest ustawiona na second.
windowsize wynosi 60 sekund, a 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 weszło lub opuścił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 SlidingWindow(), aby znaleźć maksymalną wartość 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 okien sesji grupują zdarzenia, które docierają w podobnych momentach, odfiltrowują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 po upływie 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 nad danymi strumienia kliknięć z timeoutsize wynoszącym 20 sekund i maximumdurationsize wynoszącym 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)
Migawka
migawka grupuje zdarzenia systemu Windows według identycznych wartości znacznika czasu. W przeciwieństwie do innych typów okien, określona funkcja okna nie jest wymagana. Okno migawki można stosować, określając funkcję System.Timestamp() do 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() jest uwzględniana w klauzuli GROUP BY jako definicji okna migawki, ponieważ grupuje zdarzenia w oknie na podstawie równości sygnatur czasowych.