Principy funkcí oken

Dokončeno

Běžným cílem zpracování datových proudů je agregovat události do dočasných intervalů nebo okna. Pokud chcete například spočítat počet příspěvků sociálních médií za minutu nebo vypočítat průměrné srážky za hodinu.

Azure Stream Analytics zahrnuje nativní podporu pěti druhů časových okenních funkcí. Tyto funkce umožňují definovat časové intervaly, do kterých se data agregují v dotazu. Podporované funkce oken jsou přeskakující, , posuvné, relacea snímek.

Převracení

Klouzající okenní funkce segmentují datový proud do souvislé řady nepřekrývajících se časových segmentů s pevnou velikostí a na nich provádějí operace. Události nemůžou patřit do více než jednoho přeskakujícího okna.

Diagram znázorňující datový proud s řadou událostí namapovaných do 1minutových klouzavých oken.

Příklad přeskakujícího okna reprezentovaný následujícím dotazem vyhledá maximální hodnotu čtení v každém minutovém okně. Funkce oken se použijí v úlohách Stream Analytics pomocí klauzule GROUP BY syntaxe dotazu. Klauzule GROUP BY v následujícím dotazu obsahuje funkci TumblingWindow(), která určuje jednominutovou velikost okna.

SELECT DateAdd(minute,-1,System.TimeStamp) AS WindowStart,
       System.TimeStamp() AS WindowEnd,
       MAX(Reading) AS MaxReading
INTO
    [output]
FROM
    [input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY TumblingWindow(minute, 1)

Poskakování

Skokové model funkcí plánovaných překrývajících se oken, které přeskočí kupředu v čase o pevné období. Je nejjednodušší si je představit jako přeskakující okna, která se můžou překrývat a generovat častěji než velikost okna. Ve skutečnosti jsou překlápěcí okna jednoduše skákajícím oknem, jehož hop je rovno jeho size. Při použití přeskakujících oken mohou události patřit do více než jedné výsledkové množiny.

Diagram znázorňuje datový proud s řadou událostí zachycených v 60sekundových překrývajících se oknech, která se vyskytují každých 30 sekund.

Chcete-li vytvořit skákající okno, musíte zadat tři parametry. První parametr označuje časovou jednotku, například sekundu, minutu nebo hodinu. Následující parametr nastaví velikost okna, která určuje, jak dlouho každé okno trvá. Posledním povinným parametrem je velikost kroku, která určuje, o kolik se jednotlivá okna posunou dopředu oproti předchozímu. Lze také použít volitelný čtvrtý parametr označující velikost posunu.

Následující dotaz ukazuje použití HoppingWindow(), kde je timeunit nastavena na second. windowsize je 60 sekund a hopsize je 30 sekund. Tento dotaz vypíše událost každých 30 sekund obsahující maximální hodnotu čtení, ke které došlo za posledních 60 sekund.

SELECT DateAdd(second,-60,System.TimeStamp) AS WindowStart,
       System.TimeStamp() AS WindowEnd,
       MAX(Reading) AS MaxReading
INTO
    [output]
FROM
    [input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY HoppingWindow(second, 60, 30)

Klouzání

posuvné okna generují události pro body v čase, když se obsah okna skutečně změní. Tento model funkcí omezuje počet oken, která je potřeba zvážit. Azure Stream Analytics vypíše události pouze pro ty body v čase, kdy událost vstoupila nebo ukončila okno. Každé okno proto obsahuje minimálně jednu událost. Události v posuvných oknech mohou patřit do několika posuvných oken, podobně jako skákající okna.

Diagram znázorňuje stream se řadou událostí mapovaných do posuvných oken o délce 1 minuty.

Následující dotaz používá funkci SlidingWindow() k vyhledání maximální hodnoty čtení v každém minutovém okně, ve kterém došlo k události.

SELECT DateAdd(minute,-1,System.TimeStamp) AS WindowStart,
       System.TimeStamp() AS WindowEnd,
       MAX(Reading) AS MaxReading
INTO
    [output]
FROM
    [input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY SlidingWindow(minute, 1)

Sezení

Relace funkce okna seskupují události, které přicházejí v podobných časech, a vyfiltrují dobu, kdy nejsou k dispozici žádná data. Má tři primární parametry: časový limit, maximální dobu trvání a klíč dělení (volitelné).

Diagram znázorňuje datový proud s řadou událostí mapovaných do oken relací s časovým limitem 20 sekund a maximální dobou trvání 60 sekund. okna relace

Výskyt první události spustí okno relace. Předpokládejme, že v rámci zadaného časového limitu od poslední ingestované události dojde k jiné události. V takovém případě se okno rozšíří tak, aby zahrnovalo novou událost. Pokud však v zadaném časovém limitu nedojde k žádným jiným událostem, okno se po uplynutí této doby zavře. Pokud události probíhají během zadaného časového limitu, okno relace se prodlouží až do dosažení maximální doby trvání.

Následující dotaz měří délku uživatelské relace vytvořením SessionWindow nad clickstreamovými daty, přičemž timeoutsize je 20 sekund a maximumdurationsize je 60 sekund.

SELECT DateAdd(second,-60,System.TimeStamp) AS WindowStart,
       System.TimeStamp() AS WindowEnd,
       MAX(Reading) AS MaxReading
INTO
    [output]
FROM
    [input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY SessionWindow(second, 20, 60)

Snímek

Snapshot windows seskupí události podle stejných hodnot časového razítka. Na rozdíl od jiných typů oken není vyžadována konkrétní funkce okna. Okno snímku můžete použít zadáním funkce System.Timestamp() do klauzule GROUP BY dotazu.

Diagram znázorňuje datový proud s řadou událostí, které jsou namapovány na okna snímků.

Následující dotaz například najde maximální hodnotu čtení událostí, ke kterým dochází přesně ve stejnou dobu.

SELECT System.TimeStamp() AS WindowTime,
       MAX(Reading) AS MaxReading
INTO
    [output]
FROM
    [input] TIMESTAMP BY EventProcessedUtcTime
GROUP BY System.Timestamp()

System.Timestamp() se v klauzuli GROUP BY považuje za definici okna snímku, protože seskupuje události do okna na základě rovnosti časových razítek.