Omówienie funkcji okien

Ukończone

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.

A diagram illustrating a stream with a series of events mapped into 1-minute tumbling windows.

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.

The diagram illustrates a stream with a series of events captured in 60 second hopping windows that occur every 30 seconds.

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.

The diagram illustrates a stream with a series of events mapped into sliding windows of 1 minute.

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).

The diagram illustrates a stream with a series of events mapped into session windows with a 20-second timeout and a maximum duration of 60 seconds.

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.

The diagram illustrates a stream with a series of events mapped into snapshot windows.

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.