Sdílet prostřednictvím


System.Timestamp() (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 událostem časová razítka.

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

Časové razítko vstupní události lze definovat pomocí hodnoty sloupce (nebo výrazu) zadaného v klauzuli TIMESTAMP BY :

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

Pokud pro daný vstup není zadána klauzule TIMESTAMP BY, použije se jako časové razítko čas příjezdu události. Například čas události ve frontě se použije v případě vstupu centra událostí.

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

Při výpočtu je časovým razítkem výsledné události nejstarší logický čas, ve kterém lze tento výsledek určit.

Podívejme se, jak základní operace dotazů ve službě Azure Stream Analytics (filtry, projekce, agregace a spojení) generují časová razítka pro výsledek.

Projekce

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.

Filtr

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.

OKNO GROUP BY v průběhu času

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 období, kterému tento výsledek odpovídá. Přečtěte si články o vytváření oken (Azure Stream Analytics), které popisují různé typy oken v 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í vytváří výsledky, které odpovídají párům událostí ze input1 a input2.

Událost, která představuje shodu události E1 ze input1 a e2 ze input2, je časového razítka označená nejnovějšími časovými razítky 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í odpovídající dvojici událostí z input1 a input2; jiné odpovídají pouze události ze input1 a označují, že nebyla nalezena žádná odpovídající událost ze input2.

Události, které představují shodu (mají input1 i input2), jsou časového razítka označeny nejnovějšími časovými razítky 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 nejnovější logický čas, ve kterém mohlo dojít k odpovídající události input2. Například ve výše uvedeném příkladu je to časové razítko input1 + 10 minut.