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ásimű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ú.

Diagram that shows the concept of Stream Analytics window functions.

Á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.

Diagram that shows an example Stream Analytics tumbling window.

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.

Diagram that shows an example of the hopping window.

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.

Diagram that shows an example of a sliding window.

Í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ő).

Diagram that shows a sample Stream Analytics session window.

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.

Diagram that shows a sample Steam Analytics snapshot window.

Í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: