Dela via


System.Timestamp() (Stream Analytics)

Varje händelse i varje steg i frågan i Azure Stream Analytics har en associerad tidsstämpel. 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ämpeln 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. Till exempel kommer en köad tid för händelsen att användas vid händelsehubbens indata.

Resulterande händelsetidsstämpel

När beräkningar utförs är tidsstämpeln för den resulterande händelsen den tidigaste logiska tidpunkten 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, aggregeringar och kopplingar) genererar tidsstämplar för resultatet.

Projektion

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 samma 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 tidsperioden som resultatet motsvarar. Se artiklarna om fönster (Azure Stream Analytics) som beskriver olika fönstertyper i Azure Stream Analytics.

INRE KOPPLING

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ändelser som representerar en matchning (har både input1 och input2) tidsstämplas med 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 tiden då en matchande input2-händelse kunde ha inträffat. I exemplet ovan är det till exempel tidsstämpeln för input1 + 10 minuter.