System.Timestamp()

✅Eventstream prostředků infrastruktury Azure Stream Analytics ✅

Poznámka:

Eventstream fabric je založený na stejném modulu runtime jako Azure Stream Analytics. Proto jsou koncepty popsané v tomto článku použitelné jak pro Azure Stream Analytics, tak pro eventstream fabric.

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.

Tady popisujeme, jak Azure Stream Analytics přiřazuje časová razítka k 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 doručení události jako časové razítko. Například doba zařazení události do fronty se používá, když je vstupem Azure Event Hubs.

Č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á. Podívejte se na články o windowingu popisující různé typy oken ve službě Azure Stream Analytics.

VNITŘNÍ SPOJENÍ

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á vstupní1 i vstupní2) jsou časové razítko podle nejnovějších časových razítek odpovídajících vstupů (stejně jako u inner JOIN výše).

Události, které představují nekomátní hodnoty (input2 je NULL), jsou časovým razítkem posledního logického času, kdy mohlo dojít k odpovídající události input2. Například v tomto příkladu se jedná o časové razítko vstupu1 + 10 minut.