Úvod do funkcí pro vytváření oken Stream Analytics

V scénářích streamování času je provádění operací s daty obsaženými v časových oknech běžným vzorem. Stream Analytics má nativní podporu funkcí pro práci s okny, což vývojářům umožňuje vytvářet složité úlohy zpracování datových proudů s minimálním úsilím.

Existuje pět druhů časových oken, ze které si můžete vybrat:

Funkce okna použijete v klauzuli GROUP BY syntaxe dotazu v úlohách Stream Analytics. Pomocí funkce Windows() můžete také agregovat události v několika oknech.

Všechny operace vytváření oken vypíše výsledky na konci okna. Když spustíte úlohu Stream Analytics, můžete zadat čas spuštění výstupu úlohy a systém automaticky načte předchozí události v příchozích datových proudech tak, aby výstupem prvního okna v zadané době, například když začnete s možností Now , začne okamžitě generovat data. Výstupem okna bude jedna událost založená na použité agregační funkci. Výstupní událost má časové razítko konce okna a všechny funkce okna jsou definovány s pevnou délkou.

Diagram that shows the concept of Stream Analytics window functions.

Přeskakující okno

Pomocí funkcí pro přeskakující okno můžete segmentovat datový proud do různých časových segmentů a provádět proti nim funkci.

Klíčovými rozdíly pro přeskakující okno jsou:

  • Neopakují se.
  • Nepřekrývají se.
  • Událost nemůže patřit do více než jednoho přeskakujícího okna.

Diagram that shows an example Stream Analytics tumbling window.

Tady jsou vstupní data pro příklad:

Kolek CreatedAt Časové pásmo
0 2021-10-26T10:15:01 PST
5 2021-10-26T10:15:03 PST
4 2021-10-26T10:15:06 PST
... ... ...

Tady je ukázkový dotaz:

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

Tady je ukázkový výstup:

WindowEndTime Časové pásmo Počet
2021-10-26T10:15:10 PST 5
2021-10-26T10:15:20 PST 2
2021-10-26T10:15:30 PST 4

Skákání okna

Funkce skákající okna se posunou dopředu o pevné období. Může být snadné si je představit jako přeskakující okna, která se můžou překrývat a generovat častěji než velikost okna. Události můžou patřit do více než jedné sady výsledků okna skákání. Pokud chcete, aby okno přeskakování bylo stejné jako přeskakující okno, zadejte velikost segmentu směrování, která bude stejná jako velikost okna.

Diagram that shows an example of the hopping window.

Tady jsou ukázková data:

Kolek CreatedAt Téma
0 2021-10-26T10:15:01 Streamování
5 2021-10-26T10:15:03 Streamování
4 2021-10-26T10:15:06 Streamování
... ... ...

Tady je ukázkový dotaz:

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

Tady je ukázkový výstup:

WindowEndTime Téma Počet
2021-10-26T10:15:10 Streamování 5
2021-10-26T10:15:15 Streamování 3
2021-10-26T10:15:20 Streamování 2
2021-10-26T10:15:25 Streamování 4
2021-10-26T10:15:30 Streamování 4

Posuvné okno

Posuvná okna, na rozdíl od přeskakování nebo přeskakování oken, výstupní události pouze pro body v čase, kdy se obsah okna skutečně změní. Jinými slovy, když událost vstoupí nebo ukončí okno. Takže každé okno má aspoň jednu událost. Podobně jako skákání oken můžou události patřit do více než jednoho posuvného okna.

Diagram that shows an example of a sliding window.

Tady jsou ukázková vstupní data:

Kolek CreatedAt Téma
0 2021-10-26T10:15:10 Streamování
5 2021-10-26T10:15:12 Streamování
9 2021-10-26T10:15:15 Streamování
7 2021-10-26T10:15:15 Streamování
8 2021-10-26T10:15:27 Streamování

Tady je ukázkový dotaz:

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

Výstup:

WindowEndTime Téma Počet
2021-10-26T10:15:15 Streamování 4
2021-10-26T10:15:20 Streamování 3

Okno relace

Funkce okna relace seskupují události, které přicházejí v podobných časech, a vyfiltrují období, kdy nejsou k dispozici žádná data. Má tři hlavní parametry:

  • Timeout
  • Maximální doba trvání
  • Klíč dělení (volitelné)

Diagram that shows a sample Stream Analytics session window.

Okno relace začíná, když dojde k první události. Pokud dojde k jiné události v zadaném časovém limitu od poslední ingestované události, okno se rozšíří tak, aby zahrnovalo novou událost. V opačném případě, pokud v časovém limitu nedojde k žádným událostem, okno se zavře při vypršení časového limitu.

Pokud se události stále vyskytují v zadaném časovém limitu, okno relace se bude rozšiřovat až do dosažení maximální doby trvání. Maximální intervaly kontroly doby trvání jsou nastaveny na stejnou velikost jako zadaná maximální doba trvání. Pokud je například maximální doba trvání 10, zkontroluje, jestli okno překročí maximální dobu trvání v t = 0, 10, 20, 30 atd.

Pokud je k dispozici klíč oddílu, události se seskupí podle klíče a okna relace se u každé skupiny nezávisle. Toto dělení je užitečné v případech, kdy potřebujete různá okna relací pro různé uživatele nebo zařízení.

Tady jsou ukázková vstupní data:

Kolek CreatedAt Téma
0 2021-10-26T10:15:01 Streamování
2 2021-10-26T10:15:04 Streamování
3 2021-10-26T10:15:13 Streamování
... ... ...

Tady je ukázkový dotaz:

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

Výstup:

WindowEndTime Téma Počet
2021-10-26T10:15:09 Streamování 2
2021-10-26T10:15:24 Streamování 4
2021-10-26T10:15:31 Streamování 2
2021-10-26T10:15:39 Streamování 0

Okno Snímek

Události skupiny snímků , které mají stejné časové razítko Na rozdíl od jiných typů oken, které vyžadují konkrétní funkci okna (například SessionWindow()), můžete okno snímku použít přidáním System.Timestamp() do klauzule GROUP BY.

Diagram that shows a sample Steam Analytics snapshot window.

Tady jsou ukázková vstupní data:

Kolek CreatedAt Téma
0 2021-10-26T10:15:04 Streamování
2 2021-10-26T10:15:04 Streamování
3 2021-10-26T10:15:04 Streamování
... ... ...

Tady je ukázkový dotaz:

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

Tady je ukázkový výstup:

WindowEndTime Téma Počet
2021-10-26T10:15:04 Streamování 4
2021-10-26T10:15:10 Streamování 2
2021-10-26T10:15:13 Streamování 0
2021-10-26T10:15:22 Streamování 2

Další kroky

Podívejte se na následující články: