Stream Analytics pencere işlevlerine giriş

Zaman akışı senaryolarında yaygın bir desen, zamansal pencerelerde bulunan veriler üzerinde işlemler gerçekleştirmektir. Stream Analytics, pencere işlevleri için yerel desteğe sahiptir, bu nedenle en az çabayla karmaşık akış işleme işleri oluşturabilirsiniz.

Beş çeşit zamansal pencere vardır:

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

Tüm pencereleme işlemleri, pencerenin sonunda sonuç verir. Bir akış analizi işi başlattığınızda, İşin çıkış başlangıç zamanını belirtebilirsiniz. Sistem, ilk pencereyi belirtilen zamanda çıkarmak için gelen akışlardaki önceki olayları otomatik olarak alır. Ö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 olaydır. Çıkış olayı, pencerenin sonunun zaman damgasına sahiptir ve tüm pencere işlevleri sabit uzunlukta tanımlanır.

Stream Analytics pencere işlevleri kavramını gösteren diyagram.

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.

Kayan pencerenin anahtar farkları şunlardır:

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

Örnek bir Stream Analytics kayan penceresini gösteren diyagram.

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

Damga OluşturulmaTarihi 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:

PencereBitişZamanı 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 tetiklenebilen yuvarlanır pencereler olarak düşünmek kolay olabilir. Olaylar birden fazla atlamalı pencere sonuç kümesine ait olabilir. Yuvarlanan pencereyi atlayan pencereyle aynı yapmak için, atlama boyutunu pencere boyutuyla aynı olacak şekilde ayarlayın.

Atlama penceresinin bir örneğini gösteren diyagram.

Örnek veriler şunlardır:

Damga OluşturulmaTarihi Konu
1 2021-10-26T10:15:01 Yayın
5 2021-10-26T10:15:03 Yayın
4 2021-10-26T10:15:06 Yayın
... ... ...

Ö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:

PencereBitişZamanı Konu Sayı
2021-10-26T10:15:10 Yayın 5
2021-10-26T10:15:15 Yayın 3
2021-10-26T10:15:20 Yayın 2
2021-10-26T10:15:25 Yayın 4
2021-10-26T10:15:30 Yayın 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.

Kayan pencere örneğini gösteren diyagram.

Örnek giriş verileri şunlardır:

Damga OluşturulmaTarihi Konu
1 2021-10-26T10:15:10 Yayın
5 2021-10-26T10:15:12 Yayın
9 2021-10-26T10:15:15 Yayın
7 2021-10-26T10:15:15 Yayın
8 2021-10-26T10:15:27 Yayın

Ö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

Çıktı:

PencereBitişZamanı Konu Sayı
2021-10-26T10:15:15 Yayın 4
2021-10-26T10:15:20 Yayın 3

Oturum penceresi

Oturum penceresi işlevleri benzer zamanlarda gelen olayları gruplandırır. Veri olmayan zaman aralıklarını filtreler. Oturum penceresi işlevinin üç ana parametresi vardır:

  • Zaman Aşımı
  • Maksimum süre
  • Bölümleme anahtarı (isteğe bağlı).

Örnek bir Stream Analytics oturum penceresini gösteren diyagram.

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 kapanı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ı boyuttadır. Örneğin, en uzun süre 10 olduğunda, pencerenin maksimum süreyi aşıp aşmadığını kontrol etme işlemleri t = 0, 10, 20, 30 gibi zaman noktalarında gerçekleşir.

Bölüm anahtarı sağladığınızda işlev olayları anahtara göre gruplandırıp oturum penceresini her gruba bağımsız olarak uygular. 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 OluşturulmaTarihi Konu
1 2021-10-26T10:15:01 Yayın
2 2021-10-26T10:15:04 Yayın
3 2021-10-26T10:15:13 Yayın
... ... ...

Ö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)

Çıktı:

PencereBitişZamanı Konu Sayı
2021-10-26T10:15:09 Yayın 2
2021-10-26T10:15:24 Yayın 4
2021-10-26T10:15:31 Yayın 2
2021-10-26T10:15:39 Yayın 1

Anlık görüntü penceresi

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

Örnek bir Steam Analytics anlık görüntü penceresini gösteren diyagram.

Örnek giriş verileri şunlardır:

Damga OluşturulmaTarihi Konu
1 2021-10-26T10:15:04 Yayın
2 2021-10-26T10:15:04 Yayın
3 2021-10-26T10:15:04 Yayın
... ... ...

Ö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:

PencereBitişZamanı Konu Sayı
2021-10-26T10:15:04 Yayın 4
2021-10-26T10:15:10 Yayın 2
2021-10-26T10:15:13 Yayın 1
2021-10-26T10:15:22 Yayın 2

Sonraki Adımlar

Aşağıdaki makalelere bakın: