Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ą.
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.
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.
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.
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).
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 .
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:
- 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)