Sdílet prostřednictvím


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

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

Existuje pět druhů časových oken:

Funkce okna použijte v klauzuli GROUP BY syntaxe dotazu v úlohách Stream Analytics. Události ve více oknech můžete agregovat také pomocí funkce Windows().

Všechny oknové operace vypisují výsledky na konci okna. Když spustíte úlohu Stream Analytics, můžete zadat čas spuštění výstupu úlohy. Systém automaticky načte předchozí události v příchozích datových proudech, aby v zadaném čase vypíše první okno. Například když začnete s možností Nyní , začne se okamžitě generovat data. Výstupem okna je 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 znázorňující koncept funkcí okna Stream Analytics

Přeskakující okno

Pomocí funkcí časových oken typu Tumbling můžete rozdělit datový proud do samostatných časových segmentů a provádět na nich funkce.

Klíčovými odlišnostmi posuvného okna jsou:

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

Diagram znázorňující příklad padajícího okna Stream Analytics.

Tady jsou vstupní data pro příklad:

Razítko CreatedAt TimeZone
1 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:

ČasKonceOkna TimeZone Count
2021-10-26T10:15:10 PST 5
2021-10-26T10:15:20 PST 2
2021-10-26T10:15:30 PST 4

Skákající okno

Skákající okenní funkce se posouvají v čase vpřed o pevně stanovené období. Může být snadné si je představit jako posuvná okna, která se mohou překrývat a vystupovat častěji, než je velikost okna. Události mohou patřit do více než jedné sady výsledků pro okno pohybující se. Aby bylo okno typu "hopping" stejné jako okno typu "tumbling", zadejte velikost skoku jako velikost okna.

Diagram znázorňující příklad okna skákání

Tady jsou ukázková data:

Razítko CreatedAt Téma
1 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:

ČasKonceOkna Téma Count
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 padajících nebo poskakujících oken, vykazují události pouze pro časové body, kdy se obsah okna skutečně změní. Jinými slovy, když událost vstoupí do nebo opustí časové okno. Takže každé okno má aspoň jednu událost. Podobně jako u skákajících oken mohou události patřit do více než jednoho posuvného okna.

Diagram znázorňující příklad posuvného okna

Tady jsou ukázková vstupní data:

Razítko CreatedAt Téma
1 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:

ČasKonceOkna Téma Count
2021-10-26T10:15:15 Streamování 4
2021-10-26T10:15:20 Streamování 3

Okno relace

Funkce okna relace seskupí události, které přicházejí v podobných časech. Vyfiltrují časové období, kdy neexistují žádná data. Funkce okna relace má tři hlavní parametry:

  • Přerušení zápasu
  • Maximální doba trvání
  • Klíč dělení (volitelné)

Diagram znázorňující ukázkové okno relace služby Stream Analytics

Okno relace začíná, když dojde k první události. Pokud během zadaného časového limitu dojde k jiné události z 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 v časovém 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í mají stejnou velikost jako zadaná maximální doba trvání. Pokud je například maximální doba trvání 10, kontrola, zda okno překročí maximální dobu trvání, probíhá v časech t = 0, 10, 20, 30 a tak dále.

Když zadáte klíč oddílu, funkce seskupí události podle klíče a aplikuje okno relace na každou skupinu 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:

Razítko CreatedAt Téma
1 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:

ČasKonceOkna Téma Count
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í 1

Okno Snímek

Skupina událostí snímků windows, 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 GROUP BY klauzule.

Diagram znázorňující ukázkové okno snímku Služby Steam Analytics

Tady jsou ukázková vstupní data:

Razítko CreatedAt Téma
1 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:

ČasKonceOkna Téma Count
2021-10-26T10:15:04 Streamování 4
2021-10-26T10:15:10 Streamování 2
2021-10-26T10:15:13 Streamování 1
2021-10-26T10:15:22 Streamování 2

Další kroky

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