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.