Sdílet prostřednictvím


System.Timestamp()

✅ Azure Stream Analytics

Každá událost v každé fázi dotazu v Azure Stream Analytics má přidružené časové razítko. System.Timestamp() je systémová vlastnost, kterou lze použít k načtení časového razítka události.

Níže popisujeme, jak Azure Stream Analytics přiřazuje časová razítka událostem.

Časové razítko vstupních událostí

Časové razítko vstupní události může být definováno hodnotou sloupce (nebo výrazem) zadanou v klauzuli TIMESTAMP BY :

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

Pokud pro daný vstup není zadaná klauzule TIMESTAMP BY, použije se čas přijetí události jako časové razítko. Například čas zařazení události do fronty se použije v případě vstupu centra událostí.

Časové razítko výsledné události

Při provedení výpočtů je časové razítko výsledné události nejstarším logickým časem, kdy lze tento výsledek určit.

Pojďme se podívat, jak základní operace dotazů ve službě Azure Stream Analytics (filtry, projekce, agregace a spojení) generují časové razítka výsledku.

Projection

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

Projekce nemění časové razítko události, časové razítko výsledku je stejné jako časové razítko vstupu.

Filter

SELECT *  
FROM input  
WHERE prop1 > prop2  
  

Filtry nemění časové razítko události. Časové razítko výsledku je stejné jako časové razítko vstupu.

GROUP BY over time window

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

Časové razítko výsledku agregace je konec časového intervalu, ke kterému tento výsledek odpovídá. Přečtěte si prosím články o windowingu popisující různé typy oken ve službě Azure Stream Analytics.

INNER JOIN

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

Vnitřní spojení vytvoří výsledky, které odpovídají párům událostí ze vstupu1 a vstupu2.

Událost, která představuje shodu události e1 ze vstupu1 a e2 ze vstupu2, je časovým razítkem časového razítka e1 a e2.

LEVÉ VNĚJŠÍ SPOJENÍ

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

Levé vnější spojení vytváří výsledky dvou typů. Některé odpovídají páru událostí ze vstupu1 a vstupu2; ostatní odpovídají pouze události ze vstupu1 a označují, že nebyla nalezena žádná odpovídající událost ze vstupu2.

Události, které představují shodu (má vstup1 i vstup2), jsou časové razítko posledního časového razítka odpovídajících vstupů (jako v případě INNER JOIN výše).

Události, které představují neshody (input2 je NULL), jsou časové razítko poslední logický čas, kdy mohlo dojít k odpovídající události input2. Například v předchozím příkladu se jedná o časové razítko vstupu 1 + 10 minut.