Stream Analytics pencere işlevlerine giriş

Zaman akışı senaryolarında, zamansal pencerelerde bulunan veriler üzerinde işlem gerçekleştirmek yaygın bir desendir. Stream Analytics, geliştiricilerin karmaşık akış işleme işlerini en az çabayla yazmasına olanak tanıyan pencere işlevleri için yerel desteğe sahiptir.

Aralarından seçim yapabileceğiniz beş tür zamansal pencere vardır:

Stream Analytics işlerinizde sorgu söz diziminin GROUP BY yan tümcesindeki pencere işlevlerini kullanırsınız. Ayrıca Windows() işlevini kullanarak birden çok pencere üzerinde olayları toplayabilirsiniz.

Tüm pencereleme işlemleri, pencerenin sonunda elde edilir. Bir akış analizi işini başlattığınızda, İş çıkış başlangıç zamanını belirtebilirsiniz ve sistem gelen akışlardaki önceki olayları otomatik olarak getirerek belirtilen zamanda ilk pencerenin çıkışını verir; örneğin, Şimdi seçeneğiyle başladığınızda veriler hemen yaymaya başlar. Pencerenin çıkışı, kullanılan toplama işlevini temel alan tek bir olay olacaktır. Çıkış olayı, pencerenin sonunun zaman damgasına sahiptir ve tüm pencere işlevleri sabit uzunlukta tanımlanır.

Diagram that shows the concept of Stream Analytics window functions.

Atlayan pencere

Bir veri akışını ayrı zaman dilimlerine ayırmak ve bunlara karşı bir işlev gerçekleştirmek için Atlayan pencere işlevlerini kullanın.

Atlayan pencerenin anahtar ayırıcıları şunlardır:

  • Tekrarlamaz.
  • Üst üste binemezler.
  • Bir olay birden fazla yuvarlanan pencereye ait olamaz.

Diagram that shows an example Stream Analytics tumbling window.

Örnek için giriş verileri şunlardır:

Damga pulu CreatedAt TimeZone
1 2021-10-26T10:15:01 PST
5 2021-10-26T10:15:03 PST
4 2021-10-26T10:15:06 PST
... ... ...

Örnek sorgu şu şekildedir:

SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)

Örnek çıktı şu şekildedir:

WindowEndTime TimeZone Sayı
2021-10-26T10:15:10 PST 5
2021-10-26T10:15:20 PST 2
2021-10-26T10:15:30 PST 4

Atlama penceresi

Atlamalı pencere işlevleri, belirli bir süre boyunca ileri doğru atlar. Bunları çakışan ve pencere boyutundan daha sık yayılabilir yuvarlanan pencereler olarak düşünmek kolay olabilir. Olaylar birden fazla Atlama penceresi sonuç kümesine ait olabilir. Atlama penceresini Atlayan pencereyle aynı yapmak için atlama boyutunu pencere boyutuyla aynı olacak şekilde belirtin.

Diagram that shows an example of the hopping window.

Örnek veriler şunlardır:

Damga pulu CreatedAt Konu
1 2021-10-26T10:15:01 Akışlar
5 2021-10-26T10:15:03 Akışlar
4 2021-10-26T10:15:06 Akışlar
... ... ...

Örnek sorgu şu şekildedir:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)

Örnek çıktı şu şekildedir:

WindowEndTime Konu Sayı
2021-10-26T10:15:10 Akışlar 5
2021-10-26T10:15:15 Akışlar 3
2021-10-26T10:15:20 Akışlar 2
2021-10-26T10:15:25 Akışlar 4
2021-10-26T10:15:30 Akışlar 4

Kayan pencere

Kayan pencereler, yuvarlanan veya atlamalı pencerelerden farklı olarak, yalnızca zaman içindeki noktalarda, pencerenin içeriği gerçekten değiştiğinde olayları çıkış olarak görüntüler. Başka bir deyişle, bir olay pencereye girdiğinde veya pencereden çıktığında. Bu nedenle, her pencerede en az bir olay vardır. Atlama pencerelerine benzer şekilde, olaylar birden fazla kayan pencereye ait olabilir.

Diagram that shows an example of a sliding window.

Örnek giriş verileri şunlardır:

Damga pulu CreatedAt Konu
1 2021-10-26T10:15:10 Akışlar
5 2021-10-26T10:15:12 Akışlar
9 2021-10-26T10:15:15 Akışlar
7 2021-10-26T10:15:15 Akışlar
8 2021-10-26T10:15:27 Akışlar

Örnek sorgu şu şekildedir:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3

Çıkış:

WindowEndTime Konu Sayı
2021-10-26T10:15:15 Akışlar 4
2021-10-26T10:15:20 Akışlar 3

Oturum penceresi

Oturum penceresi işlevleri, benzer zamanlarda gelen olayları gruplandırır ve veri bulunmayan zaman aralıklarını filtreler. Üç ana parametresi vardır:

  • Timeout
  • Maksimum süre
  • Bölümleme anahtarı (isteğe bağlı).

Diagram that shows a sample Stream Analytics session window.

Oturum penceresi ilk olay gerçekleştiğinde başlar. Son alınan olaydan belirtilen zaman aşımı içinde başka bir olay oluşursa, pencere yeni olayı içerecek şekilde genişletilir. Aksi takdirde, zaman aşımı içinde hiç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 en uzun süreye ulaşılana kadar uzatılır. Maksimum süre denetim aralıkları, belirtilen maksimum süreyle aynı boyuta ayarlanır. Örneğin, maksimum süre 10 ise, pencerenin maksimum süreyi aşıp aşmadiğini denetler, t = 0, 10, 20, 30 vb.

Bölüm anahtarı sağlandığında olaylar anahtara göre gruplandırılır ve oturum penceresi her gruba bağımsız olarak uygulanır. Bu bölümleme, farklı kullanıcılar veya cihazlar için farklı oturum pencerelerine ihtiyaç duyduğunuz durumlarda kullanışlıdır.

Örnek giriş verileri şunlardır:

Damga pulu CreatedAt Konu
1 2021-10-26T10:15:01 Akışlar
2 2021-10-26T10:15:04 Akışlar
3 2021-10-26T10:15:13 Akışlar
... ... ...

Örnek sorgu şu şekildedir:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)

Çıkış:

WindowEndTime Konu Sayı
2021-10-26T10:15:09 Akışlar 2
2021-10-26T10:15:24 Akışlar 4
2021-10-26T10:15:31 Akışlar 2
2021-10-26T10:15:39 Akışlar 1

Anlık görüntü penceresi

Aynı zaman damgasına sahip anlık görüntü pencereleri grubu olayları. Belirli bir pencere işlevi gerektiren diğer pencereleme türlerinden farklı olarak (SessionWindow() gibi), GROUP BY yan tümcesine System.Timestamp() ekleyerek anlık görüntü penceresi uygulayabilirsiniz.

Diagram that shows a sample Steam Analytics snapshot window.

Örnek giriş verileri şunlardır:

Damga pulu CreatedAt Konu
1 2021-10-26T10:15:04 Akışlar
2 2021-10-26T10:15:04 Akışlar
3 2021-10-26T10:15:04 Akışlar
... ... ...

Örnek sorgu şu şekildedir:

SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()

Örnek çıktı şu şekildedir:

WindowEndTime Konu Sayı
2021-10-26T10:15:04 Akışlar 4
2021-10-26T10:15:10 Akışlar 2
2021-10-26T10:15:13 Akışlar 1
2021-10-26T10:15:22 Akışlar 2

Sonraki adımlar

Aşağıdaki makalelere bakın: