Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
✅ Azure Stream Analytics ✅ Fabric Eventstream
A munkamenetablakok hasonló időpontokban érkező eseményei kiszűrik azokat az időszakokat, amikor nincsenek adatok. A munkamenet ablakfüggvényének három fő paramétere van: időtúllépés, maximális időtartam és particionálási kulcs (nem kötelező).
Az alábbi ábra egy eseménysorozatot ábrázoló streamet mutat be, és azt mutatja be, hogyan vannak leképezve a munkamenetablakokba 5 perces időtúllépéssel és legfeljebb 10 perces időtartammal.
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. Vegye figyelembe, hogy 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. Ez azt jelenti, hogy a munkamenet-ablak tényleges időtartama akár kétszer is lehet maxDuration.
Így matematikailag a munkamenet ablaka akkor ér véget, ha az alábbi feltétel teljesül:
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 olyan esetekben hasznos, amikor különböző munkamenetablakokra van szüksége a különböző felhasználókhoz vagy eszközökhöz.
Szemantika
{SESSIONWINDOW | SESSION} (timeunit, timeoutSize, maxDurationSize) [OVER (PARTITION BY partitionKey)]
{SESSIONWINDOW | SESSION} (Timeout(timeunit , timeoutSize), MaxDuration(timeunit, maxDurationSize)) [OVER (PARTITION BY partitionKey)]
Megjegyzés:
A munkamenet-ablak a fenti két módon használható.
Érvek
timeunit Az ablakosítás időegysége. Az alábbi táblázat az összes érvényes időegység-argumentumot felsorolja.
| Timeunit | Rövidítések |
|---|---|
| nap | dd, d |
| óra | Hh |
| perc | mi, n |
| második | ss, s |
| Ezredmásodperc | Ms |
| mikroszekundum | Mcs |
időtúllépés
Egy nagy egész szám, amely a munkamenetablak résméretét írja le. A résméreten belül előforduló adatok ugyanabban az ablakban vannak csoportosítva.
maxdurationsize
Ha a teljes ablakméret meghaladja a megadott maxDurationSize értéket egy ellenőrzési ponton, akkor az ablak bezárul, és egy új ablak nyílik meg ugyanazon a ponton. Az ellenőrzési időköz mérete jelenleg a maxDurationSize értéknek felel meg.
partitionkey
Nem kötelező paraméter, amely megadja a munkamenet-ablak által átható kulcsot. Ha meg van adva, az ablak csak ugyanahhoz a kulcshoz tartozó eseményeket csoportosítja.
Példák
Tegyük fel, hogy a következő json-adatokkal rendelkezik:
[
// time: the timestamp when the user clicks on the link
// user_id: the id of the user
// url: the url the user clicked on
{
"time": "2017-01-26T00:00:00.0000000z",
"user_id": 0,
"url": "www.example.com/a.html"
},
{
"time": "2017-01-26T00:00:20.0000000z",
"user_id": 0,
"url": "www.example.com/b.html"
},
{
"time": "2017-01-26T00:00:55.0000000z",
"user_id": 1,
"url": "www.example.com/c.html"
},
// ...
]
Az egyes felhasználói munkamenetek élettartamának méréséhez használja a következő lekérdezést:
CREATE TABLE localinput(time DATETIME, user_id BIGINT, url NVARCHAR(MAX))
SELECT
user_id,
MIN(time) AS window_start,
System.Timestamp() AS window_end,
DATEDIFF(s, MIN(time), System.Timestamp()) AS duration_in_seconds
FROM localinput TIMESTAMP BY time
GROUP BY user_id, SessionWindow(minute, 2, 60) OVER (PARTITION BY user_id)
Az előző lekérdezés létrehoz egy munkamenet-ablakot 2 perces időtúllépéssel, legfeljebb 60 perc időtartammal és user_id particionálási kulcsával. Ez azt jelenti, hogy minden user_id külön munkamenetablakok jönnek létre. Ez a lekérdezés minden egyes ablakban olyan kimenetet hoz létre, amely tartalmazza a user_id, az ablak kezdő időpontját (window_start), az ablak végét (window_end) és a felhasználói munkamenet teljes időtartamát (duration_in_seconds).