Dela via


System.Timestamp()

✅ Azure Stream Analytics

Varje händelse i varje steg i frågan i Azure Stream Analytics har en tidsstämpel associerad med den. System.Timestamp() är en systemegenskap som kan användas för att hämta händelsens tidsstämpel.

Nedan beskriver vi hur Azure Stream Analytics tilldelar tidsstämplar till händelser.

Tidsstämpel för indatahändelser

Tidsstämpel för indatahändelsen kan definieras av kolumnvärdet (eller ett uttryck) som anges i TIMESTAMP BY-satsen :

SELECT System.Timestamp() t   
FROM input   
TIMESTAMP BY MyTimeField  
  

Om en TIMESTAMP BY-sats inte har angetts för en viss indata används ankomsttiden för händelsen som en tidsstämpel. Enqueued-tid för händelsen används till exempel vid Event Hub-indata.

Resulterande händelsetidsstämpel

När beräkningar utförs är tidsstämpeln för den resulterande händelsen den tidigaste logiska tidpunkt då det här resultatet kunde fastställas.

Nu ska vi titta på hur de grundläggande frågeåtgärderna i Azure Stream Analytics (filter, projektioner, sammansättningar och kopplingar) genererar tidsstämplarna för resultatet.

Projection

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

Projektioner ändrar inte tidsstämpeln för händelsen, tidsstämpeln för resultatet är densamma som tidsstämpeln för indata.

Filter

SELECT *  
FROM input  
WHERE prop1 > prop2  
  

Filter ändrar inte tidsstämpeln för händelsen. Tidsstämpeln för resultatet är samma som tidsstämpeln för indata.

GRUPPERA EFTER över tid

SELECT  
      userId,  
      AVG(prop1),  
      SUM(prop2),  
      System.Timestamp() t  
FROM input  
GROUP BY TumblingWindow(minute, 1), userId  
  

Tidsstämpeln för resultatet av aggregeringen är slutet av det tidsfönster som det här resultatet motsvarar. Se Fönsterartiklar som beskriver olika fönstertyper i Azure Stream Analytics.

INNER JOIN

SELECT  
      System.Timestamp()  
FROM input1  
JOIN input2  
ON DATEDIFF(minute, input1, input2) BETWEEN 0 AND 10  
  

En inre koppling ger resultat som motsvarar matchande par av händelser från input1 och input2.

Händelsen som representerar matchningen av händelse e1 från input1 och e2 från input2 tidsstämplas av den senaste tidsstämplarna e1 och e2.

VÄNSTER YTTRE KOPPLING

SELECT  
      System.Timestamp()  
FROM input1  
LEFT JOIN input2  
ON DATEDIFF(minute, input1, input2) BETWEEN -2 AND 10  
  

En vänster-yttre koppling ger resultat av två typer. Vissa motsvarar ett matchande par händelser från input1 och input2. andra motsvarar bara en händelse från input1 och anger att ingen matchande händelse från input2 hittades.

Händelserna som representerar en matchning (har både input1 och input2) tidsstämplas av den senaste tidsstämplarna för matchande indata (som i fallet med INRE KOPPLING ovan).

Händelser som representerar icke-matchningar (input2 är NULL) tidsstämplas av den senaste logiska tidpunkten då en matchande input2-händelse kunde ha inträffat. I exemplet ovan är det till exempel indata1:s tidsstämpel + 10 minuter.