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

Window - kod fonksiyonu

Window() birden fazla satırdan hesaplamalar gerçekleştirerek her satır için ayrı 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 sütundaki ortalama, maksimum veya minimum değerle karşılaştırma.

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

Window işlevi 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.

Tabloya eklemek için Window işlevinin, üzerinde çalıştığınız tablonun LOAD ifadesi içinde bir önbelleğe sahip olması gerekir. Örneğin:

[Transactions]: Load *, Window(avg(Expression1),[Num]); LOAD TransLineID, TransID, "Num", Dim1, Dim2, Dim3, Expression1, Expression2, Expression3 FROM [lib://AttachedFiles/transactions.qvd] (qvd);

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

Load *, Round(Window(Sum(Salary),Department)) as SumSalary
Load *, Window(Sum(Salary),Department) + 5 as SumSalary

Window işlevi için bir kayan pencere tanımlayabilirsiniz. Bu, geçerli satıra Window işlevi uygulanırken kullanılan satır sayısını ayarlar. Örneğin, pencereyi önceki 3 satır ve sonraki 3 satır olacak şekilde ayarlayabilirsiniz.

Söz Dizimi:  

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

Dönüş verileri türü: İfadeLOAD tarafından oluşturulan sonuç tablosuna eklenen yeni bir alan.

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

Bağımsız Değişkenler
Bağımsız Değişken Açıklama
input_expr

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

Window(Median(Salary)) as MedianSalary

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

Window(Salary,Department) as WSalary

 

İsteğe bağlı olarak, giriş ifadesiyle bölümleme tanımlayabilirsiniz. Bölümleme, group by cümlesiyle elde edilen gruplamayla aynıdır; tek fark, sonucun girdi tablosuna yeni bir sütun olarak eklenmesidir. Bölümleme, giriş tablosunun kayıt sayısını azaltmaz. Birden fazla bölüm alanı tanımlanabilir.

Örnek: 

LOAD Window(Max(Sales), City, 'ASC', OrderDate, Sales > 300)
+ AddMonths(OrderDate,-6) as MAX_Sales_City_Last_6_Mos, Window(Avg(Sales), City, 'ASC', OrderDate, City = 'Portland')
+ AddMonths(OrderDate,-6) as Avg_Sales_Portland_Last_6_Mos, Window(Max(Sales), City, 'ASC', OrderDate, Sales > 300)
+ AddMonths(OrderDate,-12) as MAX_Sales_City_Last_12_Mos; LOAD City, Sales, OrderDate FROM [lib://AttachedFiles/Sales Data.xlsx] (ooxml, embedded labels, table is [Sales Data]);

partition1, partition2

input_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. Toplama işlemi her bir bölüm için ayrı ayrı uygulanır. Örneğin:

Window(Avg(Salary), Unit, Department, Country) as AvgSalary

Yukarıdaki örnekte bölümler şunlardır: Unit, Department ve Country.

Bölmeler zorunlu değildir ancak alanların uygun şekilde pencerelenmesi için gereklidir.

sort_type, [sort_expr]]

İsteğe bağlı olarak, sıralama türünü ve sıralama ifadesini belirtin. sort_type iki değerden birine sahip olabilir:

  • ASC: Artan sıralama.

  • DESC: Azalan sıralama.

sort_type tanımlarsanız bir sıralama ifadesi tanımlamanız gerekir. Bu, bir bölüm içindeki satırların sırasını belirleyen bir ifadedir.

Örneğin:

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

Yukarıdaki örnekte, Year alanına göre artan şekilde sıralanan bölüm içindeki sonuçlar.

Bilgi notuSıralama türü ve sıralama ifadesi öncelikle sadece RecNo ve WRank işlevleri için gereklidir.
filter_expr

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

Bu parametre tamamen atlanabilir ve sonuç filtre olmadığı şeklinde olacaktır.

Örneğin:

Window(avg(Salary), Department, 'ASC', Age, EmployeeID=3 Or EmployeeID=7)
as wAvgSalary) as wAvgSalaryIfEmpIs3or7
[start_expr,end_expr]

İsteğe bağlı olarak, kayan pencere işlevselliği için bağımsız değişkeni ayarlayın. Kayan pencere iki argüman gerektirir:

  • 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, 'ASC', Age, Year>0, -3, 1)
as WSalaryDepartment

Ö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, 'ASC', Age, Year>0, 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, 'ASC', Age, Year>0, 3, UNBOUNDED())
as WSlidingSalaryDepartment

Ö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

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 öğesinin tüm tabloyu tarayabilmesi gerekir.

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

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, bize bildirin, düzeltelim!