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ą.
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.
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.
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.
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).
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.
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:
- Wprowadzenie do usługi Azure Stream Analytics
- Get started using Azure Stream Analytics (Rozpoczynanie pracy z usługą Azure Stream Analytics)
- Scale Azure Stream Analytics jobs (Skalowanie zadań usługi Azure Stream Analytics)
- Azure Stream Analytics Query Language Reference (Dokumentacja dotycząca języka zapytań usługi Azure Stream Analytics)
- Azure Stream Analytics Management REST API Reference (Dokumentacja interfejsu API REST zarządzania usługą Azure Stream Analytics)