Aracılığıyla paylaş


Windows

✅ Azure Stream Analytics ✅ Fabric Olay Akışı

Pencereleme, belirli pencere tanımlarına bağlı olarak çeşitli zaman aralıklarında olayları toplamanın bir yolunu sağlar. Aralarından seçim yapabileceğiniz dört tür zaman penceresi vardır: Atlayan, Atlamalı, Kayan ve Oturum.

Windows() işlevi, birden çok farklı pencere tanımının sonuçlarını aynı anda hesaplamak için bu kavramı 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 işlem, system.Window() sistem işlevi kullanılarak erişilebilen her pencereye bir kimlik atanarak gerçekleştirilir . Id. System.Window() , alanı Kimliği olan bir kayıt döndürür.

Windows'un tanımlanmasını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.

Sözdizimi

| Windows ( window_definition, … ) 
| Windows ( Window ( id , window_definition ), … ) 
 
window_definition = 
| HoppingWindow ( … 
| TumblingWindow ( … 
| SlidingWindow ( … 
| SessionWindow ( … 
| Hopping ( … 
| Tumbling ( … 
| Sliding ( … 
| Session ( …  
  

Uyarı

Windows yapıları iç içe yerleştirilemez. Kimlikler tüm pencere tanımlarına verilmelidir veya hiçbiri verilmelidir.

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 penceresine 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'a 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 dakikalık sürelerin 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 bakınız