Udostępnij przez


Wprowadzenie do funkcji okien usługi Stream Analytics

W scenariuszach przesyłania strumieniowego czasu typowym wzorcem jest wykonywanie operacji na danych zawartych w oknach czasowych. Usługa Stream Analytics ma natywną obsługę funkcji okien, dzięki czemu można tworzyć złożone zadania przetwarzania strumieniowego przy minimalnym nakładzie pracy.

Istnieje pięć rodzajów okien czasowych:

Użyj funkcji okna 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 operacje okienne generują wyniki na końcu okna. Po uruchomieniu zadania Stream Analytics można określić czas rozpoczęcia wyników zadania. System automatycznie pobiera poprzednie zdarzenia w strumieniach przychodzących, aby wyświetlić pierwsze okno w określonym czasie. Na przykład po rozpoczęciu od opcji Teraz zaczyna emitować dane natychmiast. Dane wyjściowe okna to pojedyncze zdarzenie oparte na zastosowanej funkcji agregującej. Zdarzenie wyjściowe ma znacznik czasowy końca okna, a wszystkie funkcje okna są definiowane ze stałą długością.

Diagram przedstawiający koncepcję funkcji okna usługi Stream Analytics.

Okno skokowe

Funkcje okien zsuwających umożliwiają segmentowanie strumienia danych na odrębne segmenty czasowe i wykonywanie na nich funkcji.

Kluczowe cechy wyróżniające okna zsuwającego się to:

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

Diagram przedstawiający przykładowe okno zsuwające usługi Stream Analytics.

Oto dane wejściowe dla przykładu:

Stempel DataUtworzenia TimeZone
1 2021-10-26T10:15:01 Czas standardowy Pacyficzny (PST)
5 2021-10-26T10:15:03 PST
4 2021-10-26T10:15:06 PST (czas pacyficzny standardowy)
...\ ...\ ...\

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:

Czas zakończenia okna TimeZone Liczba
2021-10-26T10:15:10 Czas Pacyficzny Standardowy (PST) 5
2021-10-26T10:15:20 PST 2
2021-10-26T10:15:30 czas standardowy pacyficzny (PST) 4

Okno przeskakujące

Funkcje przeskakującego okna przesuwają się do przodu w czasie o 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 przesuwającego. Aby okno przeskakujące ustawić tak samo jak okno zsuwające się, określ rozmiar przeskoku, którym uzyskuje się taki sam rozmiar jak okno.

Diagram przedstawiający przykład okna skokowego.

Oto przykładowe dane:

Stempel DataUtworzenia Temat
1 2021-10-26T10:15:01 Streaming
5 2021-10-26T10:15:03 Streaming
4 2021-10-26T10:15:06 Streaming
...\ ...\ ...\

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:

Czas zakończenia okna Temat Liczba
2021-10-26T10:15:10 Streaming 5
2021-10-26T10:15:15 Streaming 3
2021-10-26T10:15:20 Streaming 2
2021-10-26T10:15:25 Streaming 4
2021-10-26T10:15:30 Streaming 4

Okno przesuwane

Przesuwane okna, w przeciwieństwie do okien stałoczasowych lub skaczących, generują zdarzenia wyjściowe tylko w momentach, gdy zawartość okna rzeczywiście się zmienia. Innymi słowy, gdy zdarzenie wchodzi w okno lub je opuszcza. Dlatego każde okno ma co najmniej jedno zdarzenie. Podobnie jak okna z przeskokiem, zdarzenia mogą należeć do więcej niż jednego okna przesuwnego.

Diagram przedstawiający przykład okna przesuwnego.

Oto przykładowe dane wejściowe:

Stempel DataUtworzenia Temat
1 2021-10-26T10:15:10 Streaming
5 2021-10-26T10:15:12 Streaming
9 2021-10-26T10:15:15 Streaming
7 2021-10-26T10:15:15 Streaming
8 2021-10-26T10:15:27 Streaming

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

Wyjście:

Czas zakończenia okna Temat Liczba
2021-10-26T10:15:15 Streaming 4
2021-10-26T10:15:20 Streaming 3

Okno sesji

Funkcje okna sesji grupują zdarzenia, które docierają w podobnym czasie. Filtrują okresy czasu, w których nie ma danych. Funkcja okna sesji ma trzy główne parametry:

  • Przerwa czasowa
  • Maksymalny czas trwania
  • Klucz partycjonowania (opcjonalnie).

Diagram przedstawiający przykładowe okno sesji usługi Stream Analytics.

Okno sesji rozpoczyna się po wystąpieniu pierwszego zdarzenia. Jeśli inne zdarzenie występuje w określonym przedziale czasu od ostatniego pozyskanego zdarzenia, okno zostanie rozszerzone, aby uwzględnić nowe zdarzenie. W przeciwnym razie, jeśli żadne zdarzenia nie wystąpią podczas limitu czasu, okno zostanie zamknięte po przekroczeniu 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 mają taką samą wielkość jak określony maksymalny czas trwania. Na przykład, jeśli maksymalny czas trwania wynosi 10, wówczas sprawdzanie, czy okno przekracza maksymalny czas trwania, zachodzi w momentach t = 0, 10, 20, 30 itd.

Po podaniu klucza partycji funkcja grupuje zdarzenia według klucza i stosuje okno sesji niezależnie do każdej grupy. To partycjonowanie jest przydatne 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:

Stempel DataUtworzenia Temat
1 2021-10-26T10:15:01 Streaming
2 2021-10-26T10:15:04 Streaming
3 2021-10-26T10:15:13 Streaming
...\ ...\ ...\

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)

Wyjście:

Czas zakończenia okna Temat Liczba
2021-10-26T10:15:09 Streaming 2
2021-10-26T10:15:24 Streaming 4
2021-10-26T10:15:31 Streaming 2
2021-10-26T10:15:39 Streaming 1

Okno migawki

Zdarzenia w grupach okien 'Snapshot', 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 System.Timestamp() do klauzuli GROUP BY .

Diagram przedstawiający przykładowe okno migawki usługi Steam Analytics.

Oto przykładowe dane wejściowe:

Stempel DataUtworzenia Temat
1 2021-10-26T10:15:04 Streaming
2 2021-10-26T10:15:04 Streaming
3 2021-10-26T10:15:04 Streaming
...\ ...\ ...\

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:

Czas zakończenia okna Temat Liczba
2021-10-26T10:15:04 Streaming 4
2021-10-26T10:15:10 Streaming 2
2021-10-26T10:15:13 Streaming 1
2021-10-26T10:15:22 Streaming 2

Dalsze kroki

Odwiedź następujące artykuły: