Megosztás a következőn keresztül:


Bevezetés a Stream Analytics ablakfüggvényeibe

Az időalapú streamelési forgatókönyvekben gyakori példa a műveletek végrehajtása az időablakokban található adatokon. A Stream Analytics natív támogatást nyújt az ablakozási függvényekhez, így minimális erőfeszítéssel összetett streamfeldolgozási feladatokat hozhat létre.

Az időablaknak öt típusa van:

A Stream Analytics-feladatok lekérdezési szintaxisának GROUP BY záradékában használja az ablakfüggvényeket. 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. Stream analytics-feladat indításakor megadhatja a feladat kimenetének kezdési időpontját. A rendszer automatikusan lekéri a bejövő streamek korábbi eseményeit, hogy az első ablakot a megadott időpontban jelenítse meg kimenetként. Ha például a Most lehetőséggel kezdi, az azonnal elkezd adatokat bocsát ki. Az ablak kimenete egy esemény, amely a használt összesítő függvény alapján jön létre. 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ú.

A Stream Analytics ablakfüggvényeinek fogalmát bemutató ábra.

Csúszó 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 csúszóablak legfontosabb megkülönböztető jegyei a következők:

  • Nem ismétlődnek.
  • Nem fedik egymást.
  • Egy esemény nem tartozhat egynél több ugróablakhoz.

Példa Stream Analytics-ugróablakot bemutató diagram.

A példa bemeneti adatai a következők:

Időbélyeg CreatedAt (Létrehozás ideje) TimeZone
1 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ő:

AblakVégénekIdeje TimeZone Számlál
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 egynél több mozgó ablak eredményhalmazához is tartozhatnak. Ha azt szeretné, hogy a felugró ablak ugyanolyan legyen, mint egy bukóablak, adja meg az ugrás méretét, hogy megegyezik az ablak méretével.

A felugró ablak példáját bemutató diagram.

A mintaadatok a következők:

Időbélyeg CreatedAt (Létrehozás ideje) Téma
1 2021-10-26T10:15:01 Online közvetítés
5 2021-10-26T10:15:03 Online közvetítés
4 2021-10-26T10:15:06 Online közvetíté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ő:

AblakVégénekIdeje Téma Számlál
2021-10-26T10:15:10 Online közvetítés 5
2021-10-26T10:15:15 Online közvetítés 3
2021-10-26T10:15:20 Online közvetítés 2
2021-10-26T10:15:25 Online közvetítés 4
2021-10-26T10:15:30 Online közvetítés 4

Csúszó ablak

Csúszó ablakok, ellentétben a gördülő vagy ugró ablakokkal, csak azokban az időpontokban szolgáltatnak kimeneti eseményeket, amikor az ablak tartalma valóban 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.

Egy tolóablakot bemutató ábra.

Íme a minta bemeneti adatok:

Időbélyeg CreatedAt (Létrehozás ideje) Téma
1 2021-10-26T10:15:10 Online közvetítés
5 2021-10-26T10:15:12 Online közvetítés
9 2021-10-26T10:15:15 Online közvetítés
7 2021-10-26T10:15:15 Online közvetítés
8 2021-10-26T10:15:27 Online közvetíté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:

AblakVégénekIdeje Téma Számlál
2021-10-26T10:15:15 Online közvetítés 4
2021-10-26T10:15:20 Online közvetítés 3

Munkamenet ablaka

A munkamenetablak függvényei a hasonló időpontokban érkező eseményeket csoportosítják. Kiszűrik azokat az időszakokat, amikor nincsenek adatok. A munkamenet ablakfüggvényének három fő paramétere van:

  • Időkorlát
  • Maximális időtartam
  • Particionálási kulcs (nem kötelező).

Minta Stream Analytics-munkamenetablakot bemutató diagram.

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, 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, 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. A maximális időtartam-ellenőrzési időközök 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.

Amikor megad egy partíciókulcsot, a függvény a kulcs alapján csoportosítja az eseményeket, és egymástól függetlenül alkalmazza a munkamenetablakot 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:

Időbélyeg CreatedAt (Létrehozás ideje) Téma
1 2021-10-26T10:15:01 Online közvetítés
2 2021-10-26T10:15:04 Online közvetítés
3 2021-10-26T10:15:13 Online közvetíté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:

AblakVégénekIdeje Téma Számlál
2021-10-26T10:15:09 Online közvetítés 2
2021-10-26T10:15:24 Online közvetítés 4
2021-10-26T10:15:31 Online közvetítés 2
2021-10-26T10:15:39 Online közvetítés 1

Pillanatkép ablak

Pillanatkép azonos időbélyeggel rendelkező események csoportosítása ablakokban. Más ablaktípusoktól eltérően, amelyekhez egy adott ablakfüggvény (például SessionWindow()) szükséges, a záradékhoz System.Timestamp() hozzáadva GROUP BY alkalmazhat pillanatképablakot.

A Steam Analytics-minta pillanatképablakát bemutató diagram.

Íme a minta bemeneti adatok:

Időbélyeg CreatedAt (Létrehozás ideje) Téma
1 2021-10-26T10:15:04 Online közvetítés
2 2021-10-26T10:15:04 Online közvetítés
3 2021-10-26T10:15:04 Online közvetíté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ő:

AblakVégénekIdeje Téma Számlál
2021-10-26T10:15:04 Online közvetítés 4
2021-10-26T10:15:10 Online közvetítés 2
2021-10-26T10:15:13 Online közvetítés 1
2021-10-26T10:15:22 Online közvetítés 2

Következő lépések

Lásd a következő cikkeket: