System.Timestamp() (Stream Analytics)
Az Azure Stream Analytics lekérdezésének minden szakaszában minden eseményhez tartozik egy időbélyeg. A System.Timestamp() egy rendszertulajdonság, amely az esemény időbélyegének lekérésére használható.
Az alábbiakban azt ismertetjük, hogy az Azure Stream Analytics hogyan rendel időbélyegeket az eseményekhez.
Bemeneti események időbélyege
A bemeneti esemény időbélyege a TIMESTAMP BY záradékban megadott oszlopérték (vagy kifejezés) alapján határozható meg:
SELECT System.Timestamp() t
FROM input
TIMESTAMP BY MyTimeField
Ha nincs megadva TIMESTAMP BY záradék egy adott bemenethez, az esemény érkezési ideje időbélyegként lesz használva. Az Eseményközpont bemenete esetén például az esemény enqueued időpontja lesz felhasználva.
Eredményként kapott esemény időbélyege
Számítások végrehajtásakor az eredményként kapott esemény időbélyege az a legkorábbi logikai időpont, amikor ez az eredmény meghatározható.
Vizsgáljuk meg, hogyan generálják az eredmény időbélyegeit az Azure Stream Analytics alapszintű lekérdezési műveletei (szűrők, leképezések, összesítések és illesztések).
Vetület
SELECT
Prop1,
Prop2,
Prop3 - Prop4 / 12,
System.Timestamp() t
FROM input
A leképezések nem módosítják az esemény időbélyegét, az eredmény időbélyege megegyezik a bemenet időbélyegével.
Szűrő
SELECT *
FROM input
WHERE prop1 > prop2
A szűrők nem módosítják az esemény időbélyegét. Az eredmény időbélyege megegyezik a bemenet időbélyegével.
GROUP BY over time window
SELECT
userId,
AVG(prop1),
SUM(prop2),
System.Timestamp() t
FROM input
GROUP BY TumblingWindow(minute, 1), userId
Az összesítés eredményének időbélyege annak az időkeretnek a vége, amelyre ez az eredmény megfelel. Tekintse meg az Azure Stream Analytics különböző ablaktípusokat ismertető ablakokkal (Azure Stream Analytics) foglalkozó cikkeit.
BELSŐ ILLESZTÉS
SELECT
System.Timestamp()
FROM input1
JOIN input2
ON DATEDIFF(minute, input1, input2) BETWEEN 0 AND 10
A belső illesztés olyan eredményeket hoz létre, amelyek megfelelnek az 1. és 2. bemenet egyező eseménypárjainak.
Az e1 és az e2 bemenetből származó e1 esemény egyezését jelölő eseményt az e1 és az e2 időbélyegeinek legújabb időbélyege határozza meg.
BAL OLDALI KÜLSŐ ILLESZTÉS
SELECT
System.Timestamp()
FROM input1
LEFT JOIN input2
ON DATEDIFF(minute, input1, input2) BETWEEN -2 AND 10
A bal oldali külső illesztés két típusú eredményt ad. Néhány egyező eseménypárnak felel meg az 1. és a 2. bemenetből; mások csak egy bemeneti1 eseménynek felelnek meg, és azt jelzik, hogy nem található egyező esemény a input2-ből.
Az egyezést jelképező eseményeket (mind a bemenet1, mind a bemenet2) az egyező bemenetek időbélyegeinek legújabb időbélyegei (mint a fenti INNER JOIN esetében) időbélyegzői jelzik.
A nem egyezéseket jelző eseményeket (a bemeneti2 értéke NULL) a legutóbbi logikai időpont határozza meg, amikor egyező bemeneti2 esemény történhetett. A fenti példában például az input1 időbélyege + 10 perc.