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


System.Timestamp()

✅ Azure Stream Analytics

Az Azure Stream Analytics lekérdezésének minden szakaszában minden eseményhez van időbélyeg társítva. A System.Timestamp() egy rendszertulajdonság, amely az esemény időbélyegének lekérésére használható.

Az alábbiakban bemutatjuk, hogyan rendeli hozzá az Azure Stream Analytics az 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 ideje lesz haszná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 a legkorábbi logikai idő, amikor az eredmény meghatározható.

Nézzük meg, hogy az Azure Stream Analytics alapszintű lekérdezési műveletei (szűrők, előrejelzések, aggregációk és illesztések) hogyan generálják az eredmény időbélyegeit.

Projection

SELECT  
      Prop1,  
      Prop2,  
      Prop3 - Prop4 / 12,
      System.Timestamp() t  
FROM input  
  

A előrejelzé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.

Filter

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 aggregátum eredményének időbélyege annak az időablaknak a vége, amelynek az eredmény megfelel. Tekintse meg az Azure Stream Analytics különböző ablaktípusokat ismertető ablakokat ismertető cikkeit.

INNER JOIN

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. bemenet és a bemenet2 egyező eseménypárjainak.

Az e1 és az e2 bemenetből származó e1 eseménynek az input2-ből származó egyezését 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étféle eredményt ad. Néhány egyező eseménypárnak felel meg az 1. és a 2. bemenetből; mások csak egy eseménynek felelnek meg az 1. bemenetből, és azt jelzik, hogy nem található egyező esemény a bemenet2-ből.

Az egyezést jelképező eseményeket (mind a bemeneti1, mind a bemeneti2) az egyező bemenetek időbélyegeinek legújabb időbélyegei (a fenti INNER JOIN esetében is) időbélyegzésével mérik.

A nem egyezéseket jelző eseményeket (a bemeneti2 értéke NULL) a legújabb logikai idő határozza meg, amikor egy egyező bemeneti2 esemény történhetett volna. A fenti példában például az input1 időbélyege + 10 perc.