Pencere Stream Analytics giriş
Zaman akışı senaryolarında, zamana bağlı pencerelerde yer alan veriler üzerinde işlemler gerçekleştirmek yaygın bir düzendir. Stream Analytics işlevleri pencerelemektedir ve geliştiricilerin en az çabayla karmaşık akış işleme işleri yazmalarını sağlar.
Beş tür zamansal pencere vardır: Atlar, Atlamalı,Kayan, Oturumve Anlık Görüntü pencereleri. Sorgu söz dizimlerinin GROUP BY yan tümcesinde pencere işlevlerini Stream Analytics kullanırsınız. Ayrıca, Windows() işlevini kullanarak birden çok pencere üzerinde olayları top kullanabilirsiniz.
Tüm pencere işlemleri, pencerenin sonundaki çıkışını verir. Bir akış analizi işi başlatsanız, İş çıktısı başlangıç saati belirtebilirsiniz ve sistem belirtilen zamanda ilk pencereyi çıktıya almak için gelen akışlarda önceki olayları otomatik olarak getirir; Örneğin Şimdi seçeneğiyle başsanız veriler hemen yayma başlar. Pencerenin çıkışı, kullanılan toplama işlevine göre tek bir olay olur. Çıkış olayı, pencerenin sonunun zaman damgasına sahip olur ve tüm pencere işlevleri sabit uzunlukta tanımlanır.

Atlama penceresi
Atlama penceresi işlevleri, bir veri akışını ayrı zaman segmentlerine segmentlere bölerek ve bunlar üzerinde aşağıdaki örnekte olduğu gibi bir işlev gerçekleştirmek için kullanılır. Atlayan pencerenin farkı tekrarlaması, çakışmaması ve bir olayın birden fazla atlayan pencereye ait olamamasıdır.

Aşağıdaki giriş verileriyle (yukarıda gösterildiği gibi):
| Damga | CreatedAt | TimeZone |
|---|---|---|
| 1 | 2021-10-26T10:15:01 | PST |
| 5 | 2021-10-26T10:15:03 | PST |
| 4 | 2021-10-26T10:15:06 | PST |
| ... | ... | ... |
Aşağıdaki sorgu:
SELECT System.Timestamp() as WindowEndTime, TimeZone, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY TimeZone, TumblingWindow(second,10)
Şu dönüşler olacak:
| WindowEndTime | TimeZone | Count |
|---|---|---|
| 2021-10-26T10:15:10 | PST | 5 |
| 2021-10-26T10:15:20 | PST | 2 |
| 2021-10-26T10:15:30 | PST | 4 |
Atlamalı pencere
Atlamalı pencere işlevleri zaman içinde sabit bir süre ileri atlar. Bunları çakışan ve pencere boyutundan daha sık yayılan Atlı pencereler olarak düşünmek kolay olabilir. Olaylar birden fazla Atlamalı pencere sonuç kümesine ait olabilir. Atlamalı pencereyi Atlama penceresiyle aynı yapmak için atlama boyutunun pencere boyutuyla aynı olacağını belirtin.

Aşağıdaki giriş verileriyle (yukarıda gösterildiği gibi):
| Damga | CreatedAt | Konu |
|---|---|---|
| 1 | 2021-10-26T10:15:01 | Akış |
| 5 | 2021-10-26T10:15:03 | Akış |
| 4 | 2021-10-26T10:15:06 | Akış |
| ... | ... | ... |
Aşağıdaki sorgu:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, HoppingWindow(second,10,5)
Şu dönüşler olacak:
| WindowEndTime | Konu | Count |
|---|---|---|
| 2021-10-26T10:15:10 | Akış | 5 |
| 2021-10-26T10:15:15 | Akış | 3 |
| 2021-10-26T10:15:20 | Akış | 2 |
| 2021-10-26T10:15:25 | Akış | 4 |
| 2021-10-26T10:15:30 | Akış | 4 |
Kayan pencere
Kayan pencereler, Atlama veya Atlamalı pencerelerden farklı olarak yalnızca pencerenin içeriği gerçekten değiştikleri zaman noktaları için çıkış olayları oluşturur. Başka bir deyişle, bir olay pencereye girdiği veya pencereden çıkışını gösterir. Bu nedenle her pencerede en az bir olay vardır. Atlamalı pencerelere benzer şekilde, olaylar birden fazla kayan pencereye ait olabilir.

Aşağıdaki giriş verileriyle (yukarıda gösterildiği gibi):
| Damga | CreatedAt | Konu |
|---|---|---|
| 1 | 2021-10-26T10:15:10 | Akış |
| 5 | 2021-10-26T10:15:12 | Akış |
| 9 | 2021-10-26T10:15:15 | Akış |
| 7 | 2021-10-26T10:15:15 | Akış |
| 8 | 2021-10-26T10:15:27 | Akış |
Aşağıdaki sorgu:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SlidingWindow(second,10)
HAVING COUNT(*) >=3
Şu dönüşler olacak:
| WindowEndTime | Konu | Count |
|---|---|---|
| 2021-10-26T10:15:15 | Akış | 4 |
| 2021-10-26T10:15:20 | Akış | 3 |
Oturum penceresi
Oturum penceresi işlevleri, benzer zamanlarda gelen olayları gruplar ve verinin bulunduğu zaman dönemlerini filtreler. Üç ana parametreye sahiptir: zaman aşımı, maksimum süre ve bölümleme anahtarı (isteğe bağlı).

İlk olay oluştuğunda bir oturum penceresi başlar. Son alma olayından belirtilen zaman aşımı içinde başka bir olay oluşursa, pencere yeni olayı içerecek şekilde genişletiliyor. Aksi takdirde, zaman aşımı içinde hiçbir olay oluşmazsa zaman aşımı sırasında pencere kapatılır.
Olaylar belirtilen zaman aşımı süresi içinde devam ederse, oturum penceresi en uzun süreye ulaşıncaya kadar uzatmaya devam eder. Maksimum süre denetleme aralıkları belirtilen maksimum süreyle aynı boyutta olacak şekilde ayarlanır. Örneğin, en uzun süre 10 ise, pencerenin en uzun süreyi aşıp aşmay olmadığını denetler; t = 0, 10, 20, 30 vb. olur.
Bölüm anahtarı sağlanmıştır, olaylar anahtara göre gruplanmıştı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 pencereleri gereken durumlar için kullanışlıdır.
Aşağıdaki giriş verileriyle (yukarıda gösterildiği gibi):
| Damga | CreatedAt | Konu |
|---|---|---|
| 1 | 2021-10-26T10:15:01 | Akış |
| 2 | 2021-10-26T10:15:04 | Akış |
| 3 | 2021-10-26T10:15:13 | Akış |
| ... | ... | ... |
Aşağıdaki sorgu:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, SessionWindow(second,5,10)
Şu dönüşler olacak:
| WindowEndTime | Konu | Count |
|---|---|---|
| 2021-10-26T10:15:09 | Akış | 2 |
| 2021-10-26T10:15:24 | Akış | 4 |
| 2021-10-26T10:15:31 | Akış | 2 |
| 2021-10-26T10:15:39 | Akış | 1 |
Anlık görüntü penceresi
Aynı zaman damgasına sahip anlık görüntü pencereleri grup olayları. Belirli bir pencere işlevi gerektiren diğer pencereleme türlerinden farklı olarak (SessionWindow()gibi), GROUP BY yan tümcesine System.Timestamp() ekleyerek bir anlık görüntü penceresi uygulayabilirsiniz.

Aşağıdaki giriş verileriyle (yukarıda gösterildiği gibi):
| Damga | CreatedAt | Konu |
|---|---|---|
| 1 | 2021-10-26T10:15:04 | Akış |
| 2 | 2021-10-26T10:15:04 | Akış |
| 3 | 2021-10-26T10:15:04 | Akış |
| ... | ... | ... |
Aşağıdaki sorgu:
SELECT System.Timestamp() as WindowEndTime, Topic, COUNT(*) AS Count
FROM TwitterStream TIMESTAMP BY CreatedAt
GROUP BY Topic, System.Timestamp()
Şu dönüşler olacak:
| WindowEndTime | Konu | Count |
|---|---|---|
| 2021-10-26T10:15:04 | Akış | 4 |
| 2021-10-26T10:15:10 | Akış | 2 |
| 2021-10-26T10:15:13 | Akış | 1 |
| 2021-10-26T10:15:22 | Akış | 2 |