Bevezetés a Stream Analytics ablakfüggvényeibe
Az időalapú streamelési forgatókönyvekben az időbeli ablakokban lévő adatokon végzett műveletek gyakori minta. A Stream Analytics natív támogatást nyújt az ablakfüggvényekhez, így a fejlesztők minimális erőfeszítéssel összetett streamfeldolgozási feladatokat hozhatnak létre.
Ötféle időablak közül választhat:
A Stream Analytics-feladatok lekérdezési szintaxisának GROUP BY záradékában az ablakfüggvényeket használja. A Windows() függvény használatával több ablakban is összesítheti az eseményeket.
Az ablakozási műveletek kimenete az ablak végén jelenik meg. Streamelemzési feladat indításakor megadhatja a feladat kimenetének kezdési időpontját, és a rendszer automatikusan lekéri a bejövő streamek korábbi eseményeit, hogy a megadott időpontban az első ablakot kimenetelje ki. Ha például a Most beállítással kezd, az azonnal elkezd adatokat bocsát ki. Az ablak kimenete egyetlen esemény lesz a használt összesítő függvény alapján. A kimeneti esemény az ablak végének időbélyegével rendelkezik, és az összes ablakfüggvény rögzített hosszúságú.
Átfedésmentes ablak
A átfedésmentes ablakfüggvények használatával az adatfolyamokat különböző időszegmensekbe szegmentáltuk, és egy függvényt hajtunk végre rajtuk.
A bukóablakok fő különbségei a következők:
- Nem ismétlődnek.
- Nem fedik egymást.
- Egy esemény nem tartozhat egynél több ugróablakhoz.
A példa bemeneti adatai a következők:
Pecsét | CreatedAt (Létrehozás ideje) | Időzóna |
---|---|---|
0 | 2021-10-26T10:15:01 | PST |
5 | 2021-10-26T10:15:03 | PST |
4 | 2021-10-26T10:15:06 | PST |
... | ... | ... |
Íme a minta lekérdezés:
SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)
A mintakimenet a következő:
WindowEndTime | Időzóna | Gróf |
---|---|---|
2021-10-26T10:15:10 | PST | 5 |
2021-10-26T10:15:20 | PST | 2 |
2021-10-26T10:15:30 | PST | 4 |
Felugró ablak
A felugró ablakfüggvények előreugranak az időben egy meghatározott időszak szerint. Könnyen lehet úgy tekinteni rájuk, mint a bukó ablakok, amelyek átfedésben lehetnek, és gyakrabban bocsáthatók ki, mint az ablak mérete. Az események több Hopping ablak eredményhalmazához is tartozhatnak. Ha azt szeretné, hogy a Hopping ablak ugyanolyan legyen, mint egy átfedésmentes ablak, adja meg, hogy az ugrás mérete megegyezik-e az ablak méretével.
A mintaadatok a következők:
Pecsét | CreatedAt (Létrehozás ideje) | Téma |
---|---|---|
0 | 2021-10-26T10:15:01 | Streamelés |
5 | 2021-10-26T10:15:03 | Streamelés |
4 | 2021-10-26T10:15:06 | Streamelés |
... | ... | ... |
Íme a minta lekérdezés:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)
A mintakimenet a következő:
WindowEndTime | Téma | Gróf |
---|---|---|
2021-10-26T10:15:10 | Streamelés | 5 |
2021-10-26T10:15:15 | Streamelés | 3 |
2021-10-26T10:15:20 | Streamelés | 2 |
2021-10-26T10:15:25 | Streamelés | 4 |
2021-10-26T10:15:30 | Streamelés | 4 |
Tolóablak
A csúsztatott ablakoktól eltérően a kimeneti események csak olyan időpontokra lesznek kiadva, amikor az ablak tartalma ténylegesen megváltozik. Más szóval, amikor egy esemény belép vagy kilép az ablakon. Tehát minden ablaknak van legalább egy eseménye. A felugró ablakokhoz hasonlóan az események több tolóablakhoz is tartozhatnak.
Íme a minta bemeneti adatok:
Pecsét | CreatedAt (Létrehozás ideje) | Téma |
---|---|---|
0 | 2021-10-26T10:15:10 | Streamelés |
5 | 2021-10-26T10:15:12 | Streamelés |
9 | 2021-10-26T10:15:15 | Streamelés |
7 | 2021-10-26T10:15:15 | Streamelés |
8 | 2021-10-26T10:15:27 | Streamelés |
Íme a minta lekérdezés:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3
Kimenet:
WindowEndTime | Téma | Gróf |
---|---|---|
2021-10-26T10:15:15 | Streamelés | 4 |
2021-10-26T10:15:20 | Streamelés | 3 |
Munkamenet ablaka
A munkamenetablak függvényei a hasonló időpontokban érkező eseményeket csoportosítják, kiszűrve azokat az időszakokat, amikor nincsenek adatok. Három fő paramétere van:
- Időkorlát
- Maximális időtartam
- Particionálási kulcs (nem kötelező).
A munkamenetablak az első esemény bekövetkezésekor kezdődik. Ha egy másik esemény az utolsó betöltési eseménytől számított megadott időkorláton belül következik be, akkor az ablak az új eseményre is kiterjed. Ellenkező esetben, ha az időtúllépésen belül nem történik esemény, akkor az ablak az időtúllépéskor bezárul.
Ha az események a megadott időtúllépésen belül maradnak, a munkamenet-időszak a maximális időtartam eléréséig tart. Az időtartam-ellenőrzési időközök maximális mérete megegyezik a megadott maximális időtartammal. Ha például a maximális időtartam 10, akkor annak ellenőrzése, hogy az ablak túllépi-e a maximális időtartamot, t = 0, 10, 20, 30 stb.
Ha megad egy partíciókulcsot, az eseményeket a kulcs csoportosítja, és a munkamenet-ablak egymástól függetlenül lesz alkalmazva az egyes csoportokra. Ez a particionálás olyan esetekben hasznos, amikor különböző munkamenetablakokra van szükség a különböző felhasználókhoz vagy eszközökhöz.
Íme a minta bemeneti adatok:
Pecsét | CreatedAt (Létrehozás ideje) | Téma |
---|---|---|
0 | 2021-10-26T10:15:01 | Streamelés |
2 | 2021-10-26T10:15:04 | Streamelés |
3 | 2021-10-26T10:15:13 | Streamelés |
... | ... | ... |
Íme a minta lekérdezés:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)
Kimenet:
WindowEndTime | Téma | Gróf |
---|---|---|
2021-10-26T10:15:09 | Streamelés | 2 |
2021-10-26T10:15:24 | Streamelés | 4 |
2021-10-26T10:15:31 | Streamelés | 2 |
2021-10-26T10:15:39 | Streamelés | 0 |
Pillanatkép ablak
Az azonos időbélyeget tartalmazó pillanatkép-windows-csoportok eseményei. Más ablaktípusoktól eltérően, amelyekhez egy adott ablakfüggvény (például SessionWindow()) szükséges, a System.Timestamp() a GROUP BY záradékhoz való hozzáadásával alkalmazhat pillanatképablakot.
Íme a minta bemeneti adatok:
Pecsét | CreatedAt (Létrehozás ideje) | Téma |
---|---|---|
0 | 2021-10-26T10:15:04 | Streamelés |
2 | 2021-10-26T10:15:04 | Streamelés |
3 | 2021-10-26T10:15:04 | Streamelés |
... | ... | ... |
Íme a minta lekérdezés:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
A mintakimenet a következő:
WindowEndTime | Téma | Gróf |
---|---|---|
2021-10-26T10:15:04 | Streamelés | 4 |
2021-10-26T10:15:10 | Streamelés | 2 |
2021-10-26T10:15:13 | Streamelés | 0 |
2021-10-26T10:15:22 | Streamelés | 2 |
Következő lépések
Tekintse meg az alábbi cikkeket:
- Az Azure Stream Analytics bemutatása
- Get started using Azure Stream Analytics (Bevezetés az Azure Stream Analytics használatába)
- Scale Azure Stream Analytics jobs (Azure Stream Analytics-feladatok méretezése)
- Azure Stream Analytics Query Language Reference (Referencia az Azure Stream Analytics lekérdezési nyelvhez)
- Az Azure Stream Analytics felügyeleti REST API referenciája