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


Pillanatkép-ablak (Azure Stream Analytics)

A pillanatképablakok azonos időbélyegzőt használó eseményeket csoportosítanak. Más ablaktípusoktól eltérően, amelyekhez egy adott ablakfüggvény (például SessionWindow() szükséges, a System.Timestamp() hozzáadása a GROUP BY záradékhoz is alkalmazhat pillanatképablakot.

Az alábbi ábra egy eseménysorozatot ábrázoló streamet mutat be, és azt, hogy hogyan vannak leképezve pillanatképablakokba.

Pillanatkép ablakdiagramja

A System.Timestamp() a GROUP BY záradékban kulcsoszlopként vagy pillanatképablak-definícióként tekinthető, mert az eseményeket az időbélyegek egyenlősége alapján egy ablakba csoportosítja. Egy másik ablakfüggvénnyel kombinálva a System.Timestamp() kulcsként, nem pedig ablakdefinícióként lesz kezelve. A System.Timestamp() nem eredményez hibát más ablakfüggvényekkel való használatkor, ellentétben azzal, ha a GROUP BY záradék több ablakfüggvényt használ. Az eredmények kötegeléséhez hasznos lehet mind a System.Timestamp(), mind a GROUP BY ablakfüggvényének használata.

A System.Timestamp() kifejezést tartalmazó kifejezések nem tekinthetők ablaknak. A meghiúsulás például a következő hibával meghiúsul: GROUP BY DATEPART(minute, System.Timestamp()) "egy ablakot meg kell adni".

Syntax

System.Timestamp()

Példák

Egyszerű példa

Az alábbi példa az azonos témakörtípusú tweetek számát adja vissza, amelyek pontosan ugyanabban az időben fordulnak elő:

SELECT Topic, COUNT(*)
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()

Átfedésmentes ablak pillanatképe – példa

A pillanatképablakok gyakran használják az események összesítését, miután egyetlen időbélyegre lettek csoportosítva egy korábbi ablakfüggvényen keresztül, például a Lenti TumblingWindow függvénnyel.

Az alábbi példa az azonos témakörtípusú tweetek számát adja vissza ugyanazzal a felhasználóval 30 perces időközönként:

WITH PerInterval AS (
    SELECT Topic, User, COUNT(*)
    FROM TwitterStream TIMESTAMP BY CreatedAt
    GROUP BY Topic, User, TumblingWindow(minute, 30)
)
SELECT * INTO UserTopicsCount FROM PerInterval

Ha a felhasználók számát és az egy témakörre jutó tweetek teljes számát ugyanabban az intervallumban szeretné megtalálni, használhatja az előző lekérdezés eredményét. A 30 perces határhoz igazított időbélyegek miatt a 30 perces határhoz igazított időbélyegek is megjelennek, a pillanatképablak segítségével az egyes határvonalakon lévő eseményeket is visszaadhatja, mivel mindegyiknek azonos időbélyeg-értéke van.

SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp()

Az előző lekérdezés ugyanazt a 30 perces időközt adta vissza a felhasználók számát és a tweetek teljes számát témakörenként. Ha 2 óránként egyszer szeretné megkapni ugyanazt az eredményt, adjon hozzá egy 2 órás ugróablakot a GROUP BY záradékhoz.

Az alábbi lekérdezés az egyes 2 órás időszakok végén mind a négy 30 perces intervallum eredményeit adja vissza.

SELECT Topic, Users = COUNT(*), Total = SUM (count)
FROM PerInterval
GROUP BY Topic, System.Timestamp(), Tumbling (hour, 2)

Példa a windows összesítésre

A System.Timestamp() az összesítő Windows() szerkezet egyik ablakaként használható.

SELECT 
    TollId, 
    COUNT(*) 
FROM Input TIMESTAMP BY EntryTime 
GROUP BY 
    TollId, 
    Windows(
        TumblingWindow(minute, 10),
        TumblingWindow(minute, 20),
        System.Timestamp())