Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
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.
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.
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.
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é)
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.
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: