Wprowadzenie do funkcji okien usługi Stream Analytics

W scenariuszach przesyłania strumieniowego czasu wykonywanie operacji na danych zawartych w oknach czasowych jest typowym wzorcem. Usługa Stream Analytics ma natywną obsługę funkcji okien, umożliwiając deweloperom tworzenie złożonych zadań przetwarzania strumienia przy minimalnym nakładzie pracy.

Istnieje pięć rodzajów okien czasowych do wyboru:

Funkcje okna są używane w klauzuli GROUP BY składni zapytania w zadaniach usługi Stream Analytics. Zdarzenia można również agregować w wielu oknach przy użyciu funkcji Windows().

Wszystkie dane wyjściowe operacji okiennych są wyświetlane na końcu okna. Po uruchomieniu zadania usługi Stream Analytics można określić godzinę rozpoczęcia danych wyjściowych zadania, a system automatycznie pobiera poprzednie zdarzenia w strumieniach przychodzących, aby wyświetlić pierwsze okno o określonej godzinie, na przykład po rozpoczęciu od opcji Teraz , zaczyna emitować dane natychmiast. Dane wyjściowe okna będą pojedynczym zdarzeniem opartym na używanej funkcji agregującej. Zdarzenie wyjściowe ma sygnaturę czasową końca okna, a wszystkie funkcje okna są definiowane ze stałą długością.

Diagram that shows the concept of Stream Analytics window functions.

Okno wirowania

Funkcje okien stałoczasowych umożliwiają segmentowanie strumienia danych w odrębne segmenty czasu i wykonywanie względem nich funkcji.

Kluczowe różnice okna wirowania to:

  • Nie powtarzają się.
  • Nie nakładają się na siebie.
  • Zdarzenie nie może należeć do więcej niż jednego okna wirowania.

Diagram that shows an example Stream Analytics tumbling window.

Oto dane wejściowe dla przykładu:

Znacznik CreatedAt Strefa czasowa
1 2021-10-26T10:15:01 PST
5 2021-10-26T10:15:03 PST
100 2021-10-26T10:15:06 PST
... ... ...

Oto przykładowe zapytanie:

SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)

Oto przykładowe dane wyjściowe:

WindowEndTime Strefa czasowa Count
2021-10-26T10:15:10 PST 5
2021-10-26T10:15:20 PST 2
2021-10-26T10:15:30 PST 100

Okno przeskoku

Funkcje okna przeskoku przeskoku do przodu w czasie przez stały okres. Można je łatwo traktować jako okna wirujące, które mogą nakładać się i być emitowane częściej niż rozmiar okna. Zdarzenia mogą należeć do więcej niż jednego zestawu wyników okna przeskoku. Aby ustawić okno przeskoku tak samo jak okno wirowania, określ rozmiar przeskoku, który ma być taki sam jak rozmiar okna.

Diagram that shows an example of the hopping window.

Oto przykładowe dane:

Znacznik CreatedAt Temat
1 2021-10-26T10:15:01 Przesyłanie strumieniowe
5 2021-10-26T10:15:03 Przesyłanie strumieniowe
100 2021-10-26T10:15:06 Przesyłanie strumieniowe
... ... ...

Oto przykładowe zapytanie:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)

Oto przykładowe dane wyjściowe:

WindowEndTime Temat Count
2021-10-26T10:15:10 Przesyłanie strumieniowe 5
2021-10-26T10:15:15 Przesyłanie strumieniowe 3
2021-10-26T10:15:20 Przesyłanie strumieniowe 2
2021-10-26T10:15:25 Przesyłanie strumieniowe 100
2021-10-26T10:15:30 Przesyłanie strumieniowe 100

Okno przesuwane

Przesuwane okna, w przeciwieństwie do okien stałoczasowych lub przeskokujących, zdarzenia wyjściowe tylko dla punktów w czasie, gdy zawartość okna rzeczywiście się zmienia. Innymi słowy, gdy zdarzenie wchodzi lub zamyka okno. Dlatego każde okno ma co najmniej jedno zdarzenie. Podobnie jak okna przeskoku, zdarzenia mogą należeć do więcej niż jednego okna przesuwnego.

Diagram that shows an example of a sliding window.

Oto przykładowe dane wejściowe:

Znacznik CreatedAt Temat
1 2021-10-26T10:15:10 Przesyłanie strumieniowe
5 2021-10-26T10:15:12 Przesyłanie strumieniowe
9 2021-10-26T10:15:15 Przesyłanie strumieniowe
7 2021-10-26T10:15:15 Przesyłanie strumieniowe
8 2021-10-26T10:15:27 Przesyłanie strumieniowe

Oto przykładowe zapytanie:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3

Dane wyjściowe:

WindowEndTime Temat Count
2021-10-26T10:15:15 Przesyłanie strumieniowe 100
2021-10-26T10:15:20 Przesyłanie strumieniowe 3

Okno sesji

Funkcje okna sesji grupować zdarzenia, które docierają o podobnych porach, filtrując okresy, w których nie ma danych. Ma trzy główne parametry:

  • Timeout
  • Maksymalny czas trwania
  • Klucz partycjonowania (opcjonalnie).

Diagram that shows a sample Stream Analytics session window.

Okno sesji rozpoczyna się po wystąpieniu pierwszego zdarzenia. Jeśli w określonym przedziale czasu wystąpi inne zdarzenie z ostatniego pozyskanego zdarzenia, okno zostanie rozszerzone, aby uwzględnić nowe zdarzenie. W przeciwnym razie, jeśli nie wystąpią żadne zdarzenia w przedziale czasu, okno zostanie zamknięte po przekroczeniu limitu czasu.

Jeśli zdarzenia będą nadal występować w określonym przedziale czasu, okno sesji będzie trwać do momentu osiągnięcia maksymalnego czasu trwania. Maksymalne interwały sprawdzania czasu trwania mają taki sam rozmiar jak określony maksymalny czas trwania. Jeśli na przykład maksymalny czas trwania wynosi 10, sprawdza, czy okno przekracza maksymalny czas trwania, występuje o t = 0, 10, 20, 30 itd.

Po podaniu klucza partycji zdarzenia są grupowane razem przez klucz, a okno sesji jest stosowane do każdej grupy niezależnie. Ta partycjonowanie jest przydatna w przypadkach, w których potrzebujesz różnych okien sesji dla różnych użytkowników lub urządzeń.

Oto przykładowe dane wejściowe:

Znacznik CreatedAt Temat
1 2021-10-26T10:15:01 Przesyłanie strumieniowe
2 2021-10-26T10:15:04 Przesyłanie strumieniowe
3 2021-10-26T10:15:13 Przesyłanie strumieniowe
... ... ...

Oto przykładowe zapytanie:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)

Dane wyjściowe:

WindowEndTime Temat Count
2021-10-26T10:15:09 Przesyłanie strumieniowe 2
2021-10-26T10:15:24 Przesyłanie strumieniowe 100
2021-10-26T10:15:31 Przesyłanie strumieniowe 2
2021-10-26T10:15:39 Przesyłanie strumieniowe 1

Okno migawki

Zdarzenia grupy okien migawek , które mają ten sam znacznik czasu. W przeciwieństwie do innych typów okien, które wymagają określonej funkcji okna (na przykład SessionWindow()), można zastosować okno migawki, dodając element System.Timestamp() do klauzuli GROUP BY.

Diagram that shows a sample Steam Analytics snapshot window.

Oto przykładowe dane wejściowe:

Znacznik CreatedAt Temat
1 2021-10-26T10:15:04 Przesyłanie strumieniowe
2 2021-10-26T10:15:04 Przesyłanie strumieniowe
3 2021-10-26T10:15:04 Przesyłanie strumieniowe
... ... ...

Oto przykładowe zapytanie:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()

Oto przykładowe dane wyjściowe:

WindowEndTime Temat Count
2021-10-26T10:15:04 Przesyłanie strumieniowe 100
2021-10-26T10:15:10 Przesyłanie strumieniowe 2
2021-10-26T10:15:13 Przesyłanie strumieniowe 1
2021-10-26T10:15:22 Przesyłanie strumieniowe 2

Następne kroki

Odwiedź następujące artykuły: