Ana içeriğe geç Tamamlayıcı içeriğe geç

Window - Komut dosyası fonksiyonu

Window(), tam bir tablonun bir bölümünün (veya "penceresinin") birden fazla satırından hesaplamalar yapar ve her satır için tek bir değer üretir.

Aşağıdaki gibi işlemleri gerçekleştirmek için Window işlevlerini kullanabilirsiniz:

  • Bir satırdaki tek bir sayı değerini tablonun bir penceresindeki ortalama, maksimum veya minimum değerle karşılaştırma.

  • Pencere içinde veya tüm tablo içinde tek bir değerin sıralamasını hesaplama.

Window fonksiyonu tablodaki kayıt sayısını değiştirmez ancak yine de toplama, ilişkisel ve aralık işlevleriyle benzer görevleri yerine getirebilir.

Window işlevi, üzerinde çalıştığınız tablonun LOAD deyimine dahil edilmeli veya bir Yerleşik LOAD gibi tabloya referans vermelidir. Örneğin, bkz. Örnek - Toplama içeren bir alan ekleme.

Ad atlanabilir, ancak bu, alan adının Window işlev ifadesinin tamamına ayarlanmasıyla sonuçlanır. Örneğin, aşağıdaki örnekte AvgDepSalary:

[AvgSalary]: Load *, Window(avg(Salary), Department) as AvgDepSalary Resident Employees;
Bilgi notu

Window fonksiyonuna bir alan adı verilmesi tavsiye edilir.

Window, yuvarlama veya temel sayısal işlemler gibi genel fonksiyonları destekler. Örneğin:

Load *, Round(Window(Sum(Salary),Department)) as SumDepSalary
Load *, Window(Sum(Salary),Department) + 5 as SumDepSalary
Bilgi notu

Window fonksiyonu tablonun tamamını tarar. Bellek tüketimi açısından, bu taramanın maliyeti tablodaki alan sayısı ile orantılıdır. Window fonksiyonunun üzerinde çalıştığı alanların yanı sıra az sayıda alana sahip bir tablo, her zaman çok sayıda alana sahip bir tabloya tercih edilir.

Tipik olarak, bir Window fonksiyonu, aynı toplama, bir Where cümlesi (filtre), bir Group by cümlesi (bölümleme) ve bir Order by cümlesi (sıralama) içeren benzer bir kod işlemine kıyasla 2-4 kat daha fazla bellek tüketir ve yeniden yükleme süresi 2-4 kat daha uzun sürer.

Söz Dizimi:  

Window (main_expr, [partition1, partition2, ...], [sort_type, [sort_expr],[filter_expr], [start_expr, end_expr]])

Veri türünü döndürür: Satır başına bir değer; bu değer başka bir ifadeyle birleştirilebilir veya başka bir ifadede kullanılabilir ya da doğrudan LOAD deyimi tarafından oluşturulan sonuç tablosuna eklenebilir.

Bağımsız Değişkenler:  

Bağımsız Değişkenler
Bağımsız DeğişkenAçıklama
main_expr

Fonksiyon tarafından hesaplanan ve döndürülen ana giriş ifadesi. Bu, Median(Salary) gibi bir toplamaya dayalı herhangi bir ifade olmalıdır. Örneğin:

Window(Median(Salary)) as MedianSalary

İfade, toplama uygulanmamış bir alan adı da olabilir. Bu durumda Window, Only() işlevi o alana uygulanmış gibi davranır. Örneğin:

Window(Salary) as WSalary

Window(Sum(Avg(Salary))) veya Window(Sum(Window(Salary))) gibi iç içe toplamalar ya da iç içe pencere fonksiyonları içeren ifadelere izin verilmez.

partition1, partition2

main_expr sonrasında istediğiniz sayıda bölüm tanımlayabilirsiniz. Bölümler, toplamaların hangi kombinasyonlarla uygulanacağını tanımlayan alanlardır. Örneğin:

Window(Avg(Salary), Department) as AvgDepSalary

Bu, her departman için ortalama maaşı hesaplar.

Birden fazla bölümleme parametresi sağlandığında, toplama işlemi her satıra benzersiz bir bölümleme alanı kombinasyonu ile uygulanır. Örneğin:

Window(Avg(Salary), Department, Country) as AvgDepSalaryPerCountry

Bu, her bir ülkede her departman için ortalama maaşı hesaplar. İsveç'teki Pazarlama ve Kanada'daki Pazarlama gibi farklı ülkelerdeki yinelenen departmanlar farklı bölümler olarak ele alınacaktır.

Bölümleme, group by cümlesiyle elde edilen gruplamaya benzer. Ancak bölümleme, giriş tablosuna kıyasla kayıt sayısını azaltmaz.

sort_type, [sort_expr]

İsteğe bağlı olarak, sıralama türünü ve sıralama ifadesini belirtin. Bu, toplamanın gerçekleştirildiği sırayı tanımlar. sort_type sabit bir dizedir ve üç değerden birine sahip olabilir:

  • ASC: Artan sıralama.

  • DESC: Azalan sıralama.

  • NONE

sort_type ASC veya DESC tanımlarsanız bir sıralama ifadesi tanımlamanız gerekir. sort_type NONE ile hiçbir sıralama ifadesi sağlanmamalıdır. Sıralama ifadesi, bir bölüm içindeki satırların sırasını belirler.

Örneğin:

Window(RecNo(), Department, 'ASC', Year)

Yukarıdaki örnekte bölüm içindeki toplama, Yıl alanına göre artan şekilde sıralanır.

Sıralama parametreleri, kayan pencerenin bir tabloyu işleme sırasını da etkiler. Örnek - Sıralanmış kayan pencereli bir alan ekleme

filter_expr

İsteğe bağlı olarak, bir filtre ifadesi ekleyin. Bu, kaydın hesaplamaya dahil edilip edilmeyeceğine karar veren Boolean ifadesidir.

filter_expr sağlanmışsa bir sıralama türü dahil edilmelidir. Herhangi bir sıralama türü tanımlanmamışsa bağımsız değişken bir filtre ifadesi yerine bir bölüm parametresi olarak yorumlanabilir. filter_expr parametresi tamamen atlanabilir veya doğru bir değer dahil edilebilir. Bunların her ikisi de hiçbir filtrenin kullanılmamasına neden olur, böylece hiçbir satır hariç tutulmaz.

Örneğin:

Window(avg(Salary), Department, 'ASC', Age, Country='US' Or Country='Canada') as AvgDepSalaryInUsOrCanada

Yukarıdaki Window ifadesi, Ülke alanının ABD veya Kanada olmadığı tüm satırları filtreleyerek bu satırları toplamadan hariç tutacaktır. Filtrelenen satırlar için hala çıktı değerleri olacaktır, ancak diğer tüm çıktı satırları gibi bunlar da yalnızca filtre tarafından hariç tutulmayan satırların toplu sonuçlarını içerecektir.

start_expr,end_expr

İsteğe bağlı olarak, kayan pencere işlevselliği için bağımsız değişkenleri ayarlayın. Bu, birlikte toplanacak satır sayısını daha da sınırlar. Her çıktı satırı, yalnızca geçerli satırdan önceki ve sonraki bir dizi satırın (toplanmış) sonuçlarını içerecektir. Kayan pencere iki bağımsız değişken gerektirir (start_expr,end_expr). Bu bağımsız değişkenler sağlanmışsa sıralama türü atlanmamalıdır. Aksi takdirde, bağımsız değişkenler kayan pencere yerine bir bölüm parametresi olarak yorumlanabilir. start_expr,end_expr parametresi şunları içerir:

  • Başlangıç ifadesi: Pencereye dahil edilecek geçerli satırdan önceki satır sayısı.

  • Bitiş ifadesi: Pencereye dahil edilecek geçerli satırdan sonraki satır sayısı.

Örneğin, önceki 3 satırı, geçerli satırı ve sonraki satırı dahil etmek istiyorsanız:

Window(concat(Text(Salary),'-'), Department, 'NONE', 1, -3, 1) as WSlidingSalaryDepartment

Önceki tüm satırları veya sonraki tüm satırları belirtmek için Unbounded() işlevini kullanabilirsiniz. Örneğin, önceki tüm satırları, geçerli satırı ve sonraki satırı dahil etmek için:

Window(concat(Text(Salary),'-'), Department, 'NONE', 1, UNBOUNDED(), 1) as WSlidingSalaryDepartment

Örneğin, geçerli satırdan sonraki üçüncü satırı ve sonraki tüm satırları dahil etmek için:

Window(concat(Text(Salary),'-'), Department, 'NONE', 1, 3, UNBOUNDED()) as WSlidingSalaryDepartment

Yukarıdaki örneklerde NONE sıralama türü, kodun bölüm argümanları ile sıralama türünden sonra gelen parametreler arasında ayrım yapabilmesi için sağlanmıştır.

Örnek - Toplama içeren bir alan ekleme

Örnek - Belirli değerler için filtrelenmiş toplama içeren bir alan ekleme

Örnek - Kayan pencereli bir alan ekleme

Örnek - Sıralanmış kayan pencereli bir alan ekleme

Sınırlamalar

Window şu sınırlamalara sahiptir:

  • Window, özellikle bellek tüketimi açısından yoğun kaynak kullanan bir işlevdir.

  • Window, Qlik Sense Mobile uygulamasında desteklenmiyor.

  • Grafik ifadeleri Window öğesini desteklemez.

  • Window işlevlerini diğer Window işlevlerinin içine yerleştiremezsiniz.

  • Window bir toplama işlevinin içinde kullanılamaz.

  • Window, gruplama kriteri cümlesi içeren bir load deyiminde kullanılamaz.

  • Window öğesinin tüm tabloyu tarayabilmesi gerekir.

  • WRank(), RecNo() ve RowNo() kayan pencere işlevi kullanılırken Window ile birlikte kullanılamaz.

  • Kayan pencere fonksiyonu kullanıldığında, hesaplama süresi pencerenin boyutuyla birlikte artar. Büyük pencere boyutlarıyla birleştirilmiş büyük tablolardan genellikle kaçınılmalıdır.

Bu sayfa size yardımcı oldu mu?

Bu sayfa veya içeriği ile ilgili bir sorun; bir yazım hatası, eksik bir adım veya teknik bir hata bulursanız lütfen bize bildirin!