Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
✅ 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.