Windows (Azure Stream Analytics)
Pencereleme, belirli pencere tanımlarına bağlı olarak çeşitli zaman aralıklarında olayları toplamak için bir yol sağlar. Aralarından seçim yapabileceğiniz dört tür zamana bağlı pencere vardır: Atlayan, Atlamalı, Kayan ve Oturum.
Windows() işlevi, bu kavramı birden çok farklı pencere tanımının sonuçlarını aynı anda hesaplamak için genişletir. Windows() işlevi, birden fazla pencere tanımı belirtmenize olanak tanır. Sorgu mantığı bu pencere tanımlarının her biri için hesaplanır ve sonuç tüm pencere sonuçlarının birleşimidir.
Windows() işlevinin sonucu birden çok pencere bileşimi içerdiğinden, farklı sonuçları ayırt etmeniz gerekir. Bu, system.Window() sistem işlevi kullanılarak erişilebilen her pencereye bir kimlik atanarak yapılır . Id. System.Window() , alanı Kimliği olan bir kayıt döndürür.
Windows'ı tanımlamanın iki yolu vardır:
Window() işlevini ( Id , window_definition ) kullanarak benzersiz kimlikler atayın; burada kimlik, window_definition kimliğidir ve Windows yapısındaki benzersiz büyük/küçük harfe duyarsız varchar(max) değeridir.
Kimlikler olmadan, bu durumda System.Window(). Kimlik , null değerle sonuç verir.
Syntax
| Windows ( window_definition, … )
| Windows ( Window ( id , window_definition ), … )
window_definition =
| HoppingWindow ( …
| TumblingWindow ( …
| SlidingWindow ( …
| SessionWindow ( …
| Hopping ( …
| Tumbling ( …
| Sliding ( …
| Session ( …
Not
Windows yapıları iç içe yerleştirilemez. Kimlikler tüm pencere tanımlarına verilmelidir veya yok olarak verilmelidir.
içinde olduğu gibi "window" sözcüğünün tekrarlanmaması için Windows() içinde kullanılabilen "Atlayan" gibi Windows(Window('MyWindow', TumblingWindow(…
kısaltılmış pencere tanımı adları vardır. Kısaltılmış adlar, Windows yapısının dışında da kullanılabilir.
System.Window() kullanmak bir hata değildir. Windows yapısı olmayan kimlik, ancak pencereye hiçbir kimlik verilmediğinden değeri null olur.
Pencere tanımları Window() işlevi kullanılarak belirtilirse, tüm pencere tanımları Window() işlevini kullanmalıdır ve tüm büyük/küçük harfe duyarsız kimlikler benzersiz olmalıdır. Null değerine izin verilmiyor.
System.Window() işlevi
System.Window() işlevi, gruplandırma zamanı penceresiyle ilgili meta verileri almak için yalnızca GROUP BY deyiminin SELECT yan tümcesinde kullanılabilir.
İşlev, olayın ait olduğu pencerenin kimliğini tutan tek bir alan kimliği içeren Kayıt türünde bir değer döndürür.
Örnekler
Pencere kimliği olmadan 10, 20, 30, 40, 50 ve 60 dakika sürelerinin her birine ait arabaları saymak için pencere oluşturun.
SELECT
TollId,
COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
Windows(
TumblingWindow(minute, 10),
TumblingWindow(minute, 20),
TumblingWindow(minute, 30),
TumblingWindow(minute, 40),
TumblingWindow(minute, 50),
TumblingWindow(minute, 60))
1 dakikalık atlama ve dört farklı süreyle pencereler oluşturun - 1 dk, 15 dk, 30 dk ve 60 dk.
SELECT
System.Window().Id,
TollId,
COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
Windows(
Window('1 min', TumblingWindow(minute, 1)),
Window('15 min', HoppingWindow(minute, 15, 1)),
Window('30 min', HoppingWindow(minute, 30, 1)),
Window('60 min', HoppingWindow(minute, 60, 1)))
Başvuru tablosunda belirtilen pencere süresine göre farklı boyutlarda pencereler oluşturun ve sonuçları filtreleyin.
WITH HoppingWindowResults AS
(
SELECT
System.Window().Id,
TollId,
COUNT(*)
FROM Input TIMESTAMP BY EntryTime
GROUP BY
TollId,
Windows(
Window('H10', Hopping(minute, 10, 5)),
Window('H20', Hopping(minute, 20, 5)),
Window('H30', Hopping(minute, 30, 5)),
Window('H40', Hopping(minute, 40, 5)),
Window('H50', Hopping(minute, 50, 5)),
Window('H60', Hopping(minute, 60, 5)))
)
SELECT HoppingWindowResults.*
FROM HoppingWindowResults
JOIN ReferenceTable ON
HoppingWindowResults.TollId = ReferenceTable.TollId
AND HoppingWindowResults.Id = ReferenceTable.windowId
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin