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.
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())
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: