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


Windows (Azure Stream Analytics)

Az ablakozás lehetővé teszi az események különböző időintervallumok szerinti összesítését adott ablakdefinícióktól függően. Négyféle időablak közül választhat: Tumbling, Hopping, Sliding és Session.

A Windows() függvény kiterjeszti ezt a fogalmat több különböző ablakdefiníció egyidejű kiszámítására. A Windows() függvény lehetővé teszi több ablakdefiníció megadását. A lekérdezési logika az egyes ablakdefiníciókhoz lesz kiszámítva, és az eredmény az összes ablakeredmény egyesítését jelenti.

Mivel a Windows() függvény eredménye több ablak kombinációját tartalmazza, meg kell különböztetnie a különböző eredményeket. Ez úgy történik, hogy minden egyes ablakhoz hozzárendel egy identitást, amely a System.Window() rendszerfüggvény használatával érhető el . Id. System.Window() egy olyan rekordot ad vissza, amelynek mezője az Id.

A Windows kétféleképpen definiálható:

  • Egyedi identitások hozzárendelése a Window() függvénnyel( Window ( ID , window_definition ), ahol az azonosító a window_definition identitása, és egyedi esetérzékeny varchar(max) érték a Windows-szerkezeten belül.

  • Identitások nélkül, ebben az esetben System.Window(). Az azonosító null értéket eredményez.

Syntax

| Windows ( window_definition, … ) 
| Windows ( Window ( id , window_definition ), … ) 
 
window_definition = 
| HoppingWindow ( … 
| TumblingWindow ( … 
| SlidingWindow ( … 
| SessionWindow ( … 
| Hopping ( … 
| Tumbling ( … 
| Sliding ( … 
| Session ( …  
  

Megjegyzés

A Windows-szerkezetek nem ágyazhatók be. Az identitásokat meg kell adni az összes ablakdefiníciónak, vagy egyiknek sem.

Vannak rövidített ablakdefiníciók nevei, például a "Tumbling", amelyek a Windows() rendszerben használhatók az "ablak" szó ismétlődésének elkerülésére, mint a fájlban Windows(Window('MyWindow', TumblingWindow(…. A rövidített nevek a Windows-szerkezeten kívül is használhatók.

A System.Window() használata nem hiba. A Windows-szerkezet nélküli azonosító, de értéke null értékű lesz, mert nem adott identitást az ablaknak.

Ha az ablakdefiníciók a Window() függvénnyel vannak megadva, akkor az összes ablakdefiníciónak a Window() függvényt kell használnia, és minden kis- és nagybetűs azonosítónak egyedinek kell lennie. A null érték nem engedélyezett.

System.Window() függvény

A System.Window() függvény csak a GROUP BY utasítás SELECT záradékában használható a csoportosítási időablak metaadatainak lekéréséhez.

A függvény egy Rekord típusú értéket ad vissza, amely egyetlen mezőazonosítót tartalmaz, amely annak az ablaknak az identitását tartalmazza, amelyhez az esemény tartozik.

Példák

Hozzon létre egy ablakot a 10, 20, 30, 40, 50 és 60 perc időtartamú autók megszámlálásához ablakazonosító nélkül.

SELECT 
    TollId, 
    COUNT(*) 
FROM Input TIMESTAMP BY EntryTime 
GROUP BY 
    TollId, 
    Windows( 
        TumblingWindow(minute, 10), 
        TumblingWindow(minute, 20), 
        TumblingWindow(minute, 30), 
        TumblingWindow(minute, 40), 
        TumblingWindow(minute, 50), 
        TumblingWindow(minute, 60)) 

Ablakok létrehozása 1 perces ugrással és négy különböző időtartammal – 1 perc, 15 perc, 30 perc és 60 perc.

SELECT 
    System.Window().Id, 
    TollId, 
    COUNT(*) 
FROM Input TIMESTAMP BY EntryTime 
GROUP BY 
    TollId, 
    Windows( 
        Window('1 min', TumblingWindow(minute, 1)), 
        Window('15 min', HoppingWindow(minute, 15, 1)), 
        Window('30 min', HoppingWindow(minute, 30, 1)), 
        Window('60 min', HoppingWindow(minute, 60, 1))) 

Hozzon létre különböző méretű ablakokat, és szűrje az eredményeket a Referencia táblázatban megadott időtartam alapján.

WITH HoppingWindowResults AS
( 
    SELECT 
        System.Window().Id, 
        TollId, 
        COUNT(*) 
    FROM Input TIMESTAMP BY EntryTime 
    GROUP BY 
        TollId, 
        Windows( 
            Window('H10', Hopping(minute, 10, 5)), 
            Window('H20', Hopping(minute, 20, 5)), 
            Window('H30', Hopping(minute, 30, 5)), 
            Window('H40', Hopping(minute, 40, 5)), 
            Window('H50', Hopping(minute, 50, 5)), 
            Window('H60', Hopping(minute, 60, 5))) 
) 
 
SELECT HoppingWindowResults.* 
FROM HoppingWindowResults 
JOIN ReferenceTable ON  
    HoppingWindowResults.TollId = ReferenceTable.TollId 
    AND HoppingWindowResults.Id = ReferenceTable.windowId  

Lásd még