Pencere işlevlerini anlama

Tamamlandı

Akış işlemenin yaygın hedeflerinden biri, olayları zamansal aralıklar veya pencereler halinde toplamaktır. Örneğin, dakika başına sosyal medya gönderilerinin sayısını saymak veya saatlik ortalama yağış miktarını hesaplamak için.

Azure Stream Analytics, beş tür zamansal pencereleme işlevi için yerel destek içerir. Bu işlevler, verilerin sorguda toplandığı zaman aralıklarını tanımlamanızı sağlar. Desteklenen pencere işlevleri Atlayan, Atlamalı, Kayan, Oturum ve Anlık Görüntü'lerdir.

Yuvarlanan

Atlayan pencere işlevleri, bir veri akışını sabit boyutlu, örtüşmeyen zaman dilimlerinden oluşan bitişik bir seri halinde bölümlere ayırır ve bunlara karşı çalışır. Olaylar birden fazla yuvarlanan pencereye ait olamaz.

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

Aşağıdaki sorguyla temsil edilen Atlayan pencere örneği, her bir dakikalık pencerede en yüksek okuma değerini bulur. Pencereleme işlevleri, sorgu söz diziminin GROUP BY yan tümcesi kullanılarak Stream Analytics işlerine uygulanır. GROUP BY Aşağıdaki sorgudaki yan tümcesi, bir dakikalık pencere boyutunu belirten işlevini içerirTumblingWindow().

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)

Atlamalı

Atlamalı pencere işlevleri, zamanlanmış çakışan pencereleri modelleyerek sabit bir süre boyunca ileriye doğru atlar. Bunları üst üste binebilen ve pencere boyutundan daha sık yayılan atlayan pencereler olarak düşünmek en kolay seçenektir. Aslında, yuvarlanan pencereler yalnızca değerine sizeeşit olan hop bir atlamalı penceredir. Atlama pencereleri kullandığınızda, olaylar birden fazla pencere sonuç kümesine ait olabilir.

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

Atlama penceresi oluşturmak için üç parametre belirtmeniz gerekir. İlk parametre saniye, dakika veya saat gibi zaman birimini gösterir. Aşağıdaki parametre, her pencerenin ne kadar süreceğini belirleyen pencere boyutunu ayarlar. Gerekli son parametre, her pencerenin öncekine göre ne kadar ileri doğru ilerlettiğini belirten atlama boyutudur. Uzaklık boyutunu belirten isteğe bağlı bir dördüncü parametre de kullanılabilir.

Aşağıdaki sorgu, öğesinin timeunit olarak ayarlandığı secondyeri kullanmayı HoppingWindow() gösterir. windowsize 60 saniye, hopsize 30 saniyedir. Bu sorgu her 30 saniyede bir, son 60 saniye içinde gerçekleşen en yüksek okuma değerini içeren bir olay oluşturur.

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)

Sürgülü

Kayan pencereler, pencerenin içeriği gerçekten değiştiğinde zaman içindeki noktalar için olaylar oluşturur. Bu işlev modeli, dikkate alınması gereken pencere sayısını sınırlar. Azure Stream Analytics, yalnızca bir olayın pencereye girdiği veya pencereden çıktığı zamandaki noktalar için olayları çıkışını alır. Bu nedenle, her pencere en az bir olay içerir. Kayan pencerelerdeki olaylar, Atlama pencerelerine benzer şekilde birden fazla kayan pencereye ait olabilir.

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

Aşağıdaki sorgu, SlidingWindow() bir olayın gerçekleştiği her bir dakikalık pencerede en yüksek okuma değerini bulmak için işlevini kullanır.

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)

Oturum

Oturum penceresi, benzer zamanlarda gelen olayları bir araya getirerek veri bulunmayan zaman aralıklarını filtreler. Üç birincil parametresi vardır: zaman aşımı, maksimum süre ve bölümleme anahtarı (isteğe bağlı).

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.

İlk olayın oluşumu bir oturum penceresi başlatır. Son alınan olaydan belirtilen zaman aşımı içinde başka bir olayın gerçekleştiğini varsayalım. Bu durumda, pencere yeni olayı içerecek şekilde genişletilecektir. Ancak, belirtilen zaman aşımı süresi içinde başka bir olay gerçekleşmezse, zaman aşımı sırasında pencere kapatılır. Olaylar belirtilen zaman aşımı içinde gerçekleşmeye devam ederse, oturum penceresi maksimum süreye ulaşılana kadar uzatılır.

Aşağıdaki sorgu, 20 saniye ve maximumdurationsize 60 saniyelik bir SessionWindow timeoutsize tıklama akışı verileri oluşturarak kullanıcı oturumu uzunluğunu ölçer.

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)

Anlık Görüntü

Anlık görüntü pencereleri olayları aynı zaman damgası değerlerine göre gruplandırıyor. Diğer pencereleme türlerinden farklı olarak, belirli bir pencere işlevi gerekli değildir. sorgunuzun GROUP BY yan tümcesine System.Timestamp() işlevini belirterek bir anlık görüntü penceresi kullanabilirsiniz.

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

Örneğin, aşağıdaki sorgu tam olarak aynı anda gerçekleşen olaylar için en yüksek okuma değerini bulur.

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

System.Timestamp() yan tümcesinde GROUP BY anlık görüntü penceresi tanımı olarak kabul edilir çünkü olayları zaman damgalarının eşitliğine göre bir pencerede gruplandırmaktadır.