Window Komut dosyası fonksiyonu | QlikView Yardımı
Ana içeriğe geç Tamamlayıcı içeriğe geç

Window Komut dosyası fonksiyonu

Son güncelleme: 7.10.2026

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ğıdakiler gibi işlemleri yapmak için Window fonksiyonlarını 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.

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şken Açıklama
main_expr

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

Window(Median(Salary)) as MedianSalary

İfade, toplama uygulanmamış bir alan adı da olabilir. Böyle bir durumda Window, bunu, Only() fonksiyonu o alana uygulanmış gibi işler. Ö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ölmeler, toplamalarla birlikte uygulanacak kombinasyonları 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 için bkz. Örnek - Sıralanmış kayan pencereli bir alan ekleme.

filter_expr

İsteğe bağlı olarak bir filtre ifadesi ekleyin. Bu, kaydın hesaplamaya dahil edilmesinin gerekip gerekmediğine karar veren bir 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

Tüm önceki satırları veya sonraki satırları belirtmek için Unbounded() fonksiyonunu kullanabilirsiniz. Örneğin, tüm önceki 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 üçüncü satırı ve tüm sonraki 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 kullanımı açısından kaynakları yoğun kullanan bir fonksiyondur.

  • Window, Qlik Sense Mobile uygulamasında desteklenmiyor.

  • Grafik ifadeleri Window öğesini desteklemez.

  • Window fonksiyonlarını diğer Window fonksiyonlarıyla iç içe geçiremezsiniz.

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

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

  • Window, where yan tümcesi içeren bir load ifadesinde kullanılamaz

  • Window öğesinin tablonun tamamını tarayabilmesi gerekir.

  • Kayar pencere işlevi kullanılırken WRank(), RecNo() ve RowNo(), 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!

Analiz Modernleştirme Programına katılın

Remove banner from view

Analiz Modernleştirme Programı ile değerli QlikView uygulamalarınızı ödün vermeden modernleştirin. Bize ulaşmak ve daha fazla bilgi almak için buraya tıklayın: ampquestions@qlik.com