Úvod do Stream Analyticsch funkcí okna
V rámci scénářů streamování je provádění operací s daty obsaženými v dočasných oknech běžným vzorem. Stream Analytics má nativní podporu pro funkce oken a umožňuje vývojářům vytvářet složité úlohy zpracování streamů s minimálním úsilím.
Existuje pět druhů dočasných oken, ze kterých můžete vybírat: bubny, skákající, klouzavé, relačnía snímková okna. Použijte funkce okna v klauzuli Group by syntaxe dotazu v úlohách Stream Analytics. můžete také agregovat události do více oken pomocí funkce Windows ().
Na konci okna se vrátí výstup všech operací s operacemi Window . Všimněte si, že při spuštění úlohy 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, aby se v zadaném čase načetl výstup do prvního okna. Například pokud začnete s možností nyní , začne ihned generovat data. Výstupem okna bude jediná událost založená na použité agregační funkci. Výstupní událost bude mít časové razítko konce okna a všechny funkce okna budou definovány s pevnou délkou.

Okno bubnu
Funkce bubnového okna se používají k segmentaci datového proudu do různých časových segmentů a k provedení funkce proti nim, jako je například příklad níže. Hlavním rozlišovacím znakem přeskakujícího okna je, že se opakuje, ale nepřekrývá, tzn. že událost nemůže patřit do více než jednoho přeskakujícího okna.

S následujícími vstupními daty (zobrazeno výše):
| Označení | CreatedAt | TimeZone |
|---|---|---|
| 1 | 2021-10 – 26T10:15:01 | VYTVOŘENÉ |
| 5 | 2021-10 – 26T10:15:03 | VYTVOŘENÉ |
| 4 | 2021-10 – 26T10:15:06 | VYTVOŘENÉ |
| ... | ... | ... |
Následující dotaz:
SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)
Vrátí:
| WindowEndTime | TimeZone | Počet |
|---|---|---|
| 2021-10 – 26T10:15:10 | VYTVOŘENÉ | 5 |
| 2021-10-26T10:15:20 | VYTVOŘENÉ | 2 |
| 2021-10 – 26T10:15:30 | VYTVOŘENÉ | 4 |
Okno skákající
Skákající Window Functions přesměrovává přesměrování v čase o pevné období. Je možné je snadno představit jako Bubnová okna, která se můžou překrývat a vysílat častěji než velikost okna. Události mohou patřit do více než jedné sady výsledků okna skákající. Chcete-li, aby okno skákající bylo stejné jako okno s bubnem, určete velikost segmentu směrování, který bude stejný jako velikost okna.

S následujícími vstupními daty (zobrazeno výše):
| Označení | 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í |
| ... | ... | ... |
Následující dotaz:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)
Vrátí:
| 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 bubnu nebo skákající Windows, jsou výstupní události jenom pro body v čase, kdy se obsah okna skutečně změní. Jinými slovy, když událost vstoupí do okna nebo je ukončí. Každé okno má tedy alespoň jednu událost. Podobně jako skákající okna můžou události patřit do více než jednoho posuvního okna.

S následujícími vstupními daty (zobrazeno výše):
| Označení | 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í |
Následující dotaz:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3
Vrátí:
| WindowEndTime | Téma | Počet |
|---|---|---|
| 2021-10 – 26T10:15:15 | Streamování | 4 |
| 2021-10-26T10:15:20 | Streamování | 3 |
Okno relace
Okno relace funkcí seskupuje události, které dorazí v podobných časech, a vyfiltruje tak časová období, ve kterých nejsou žádná data. Tato funkce má tři hlavní parametry: časový limit, maximální dobu trvání a dělicí klíč (volitelný).

Okno relace začíná, když dojde k první události. Pokud v rámci zadaného časového limitu z poslední přijaté události dojde k jiné události, pak se okno rozšíří na novou událost. V opačném případě dojde v případě, že v rámci časového limitu neexistují žádné události, okno je v časovém limitu uzavřen
Pokud se události v rámci zadaného časového limitu chovají, zůstane okno relace delší, než se dosáhne maximální doby trvání. Maximální intervaly kontroly doby trvání jsou nastavené tak, aby měly stejnou velikost jako zadaná maximální doba trvání. Například pokud je maximální doba trvání 10, pak kontroly, pokud by okno překročilo maximální dobu trvání, nastane při t = 0, 10, 20, 30 atd.
Při zadání klíče oddílu se události seskupí podle klíče a okno relace se aplikuje na každou skupinu nezávisle na sobě. Tento oddíl je vhodný pro případy, kdy pro různé uživatele nebo zařízení potřebujete jiná okna relace.
S následujícími vstupními daty (zobrazeno výše):
| Označení | 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í |
| ... | ... | ... |
Následující dotaz:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)
Vrátí:
| 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í | 1 |
Okno snímku
Vytvořte snímek událostí skupiny systému 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 použít okno snímku přidáním System. timestamp () do klauzule GROUP by.

S následujícími vstupními daty (zobrazeno výše):
| Označení | 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í |
| ... | ... | ... |
Následující dotaz:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
Vrátí:
| 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í | 1 |
| 2021-10 – 26T10:15:22 | Streamování | 2 |