Principy funkcí oken

Dokončeno

Běžným cílem zpracování datových proudů je agregovat události do časových intervalů nebo oken. 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ů dočasných funkcí pro okna. Tyto funkce umožňují definovat časové intervaly, do kterých se data agregují v dotazu. Podporované funkce oken jsou přeskakující, přeskakující, posuvné, relace a snímek.

Omílání

Funkce přeskakujícího okna segmentují datový proud do souvislé řady nepřekrývajících se časových segmentů s pevnou velikostí a pracují s nimi. Události nemůžou patřit do více než jednoho přeskakujícího okna.

A diagram illustrating a stream with a series of events mapped into 1-minute tumbling windows.

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 pro práci s okny se použijí v úlohách Stream Analytics pomocí klauzule GROUP BY syntaxe dotazu. Klauzule GROUP BY v následujícím dotazu obsahuje TumblingWindow() funkci, 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í

Model překryvné funkce oken s plánovaným překrýváním oken, který v čase přeskakuje 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, přeskakující okna jsou jednoduše skákající okno, jehož hop je rovna jeho size. Při použití okna skákání můžou události patřit do více než jedné sady výsledků okna.

The diagram illustrates a stream with a series of events captured in 60 second hopping windows that occur every 30 seconds.

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 segmentu směrování, která určuje, kolik jednotlivých oken se posune směrem dopředu vzhledem k předchozímu. Lze také použít volitelný čtvrtý parametr označující velikost posunu.

Následující dotaz ukazuje použití, kde HoppingWindow() je nastavena timeunit na second. Jedná se o windowsize 60 sekund a jedná se o hopsize 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)

Posuvné

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 více než jednoho posuvného okna, podobně jako skákání oken.

The diagram illustrates a stream with a series of events mapped into sliding windows of 1 minute.

Následující dotaz pomocí SlidingWindow() funkce vyhledá maximální hodnotu č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)

Relace

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

The diagram illustrates a stream with a series of events mapped into session windows with a 20-second timeout and a maximum duration of 60 seconds.

Výskyt první události spustí okno relace. Předpokládejme, že během zadaného časového limitu dojde k jiné události z poslední ingestované 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 v časovém limitu zavře. Pokud události probíhají v zadaném časovém limitu, okno relace se prodlouží až do dosažení maximální doby trvání.

Následující dotaz měří délku relace uživatele vytvořením SessionWindow více než clickstreamových dat o timeoutsize délce 20 sekund a maximumdurationsize 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

Snímky oken seskupují 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 System.Timestamp() funkce do klauzule dotazu GROUP BY .

The diagram illustrates a stream with a series of events mapped into snapshot windows.

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 GROUP BY klauzuli považuje za definici okna snímku, protože seskupuje události do okna na základě rovnosti časových razítek.