# Window - Komut dosyası fonksiyonu

Window() birden fazla satırdan hesaplamalar gerçekleştirerek her satır için ayrı 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 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 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.

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://DataFiles/transactions.qvd] (qvd);FROM [lib://AttachedFiles/transactions.qvd] (qvd);
```

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

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

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

Window fonksiyonu için bir kayar 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:

Window(avg(Salary), Department, 'NONE' -3, 3) as AvgDepSalary

Söz Dizimi:

Window (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 | Giriş ifadesi, fonksiyon tarafından hesaplanır ve döndürülür. Bu, Median(Salary) gibi bir toplamaya dayanan herhangi bir ifade olmalıdır. Örneğin:<br><br>Window(Median(Salary)) as MedianSalary<br><br>Giriş, toplama uygulanmamış bir alan adı da olabilir. Böyle bir durumda Window, bunu, Only() fonksiyonu o alana uygulanmış gibi işler. Örneğin:<br><br>Window(Salary,Department) as WSalary<br><br>İsteğe bağlı olarak, bölmelere ayırmayı giriş ifadesiyle tanımlayabilirsiniz. Bölmelere ayırma, group by cümlesiyle elde edilen gruplama ile aynıdır; tek fark, sonucun girdi tablosuna yeni bir sütun olarak eklenmesidir. Bölmelere ayırma, girdi tablosunun kayıt sayısını azaltmaz. Birden fazla bölüm alanı tanımlanabilir.<br><br>Örnek:<br><br><br>LOAD<br>Window(Max(Sales), City, 'ASC', OrderDate, Sales &gt; 300)<br>+ AddMonths(OrderDate,-6) as MAX\_Sales\_City\_Last\_6\_Mos,<br>Window(Avg(Sales), City, 'ASC', OrderDate, City = 'Portland')<br>+ AddMonths(OrderDate,-6) as Avg\_Sales\_Portland\_Last\_6\_Mos,<br>Window(Max(Sales), City, 'ASC', OrderDate, Sales &gt; 300)<br>+ AddMonths(OrderDate,-12) as MAX\_Sales\_City\_Last\_12\_Mos;<br>LOAD<br>City,<br>Sales,<br>OrderDate<br>FROM [lib://:DataFiles/Sales Data.xlsx]FROM [lib://AttachedFiles/Sales Data.xlsx]<br>(ooxml, embedded labels, table is [Sales Data]); |
| partition1, partition2 | input\_expr sonrasında istediğiniz sayıda bölüm tanımlayabilirsiniz. Bölmeler, toplamalarla birlikte uygulanacak kombinasyonları tanımlayan alanlardır. Toplama, her bir bölmeyle ayrı olarak uygulanır. Örneğin:<br><br>Window(Avg(Salary), Unit, Department, Country) as AvgSalary<br><br>Yukarıdaki bölmeler: Unit, Department ve Country.<br><br>Bölmeler zorunlu değildir, ancak alanların uygun şekilde pencerelere ayrılması 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:<br><br><ul><li><p><span>ASC</span>:&nbsp;Artan sıralama.</p></li><li><p><span>DESC</span>:&nbsp;Azalan sıralama.</p></li></ul><br><br>sort\_type tanımlarsanız bir sıralama ifadesi tanımlamanız gerekir. Bu, bir bölmedeki satırların sırasına karar veren ifadedir.<br><br>Örneğin:<br><br>Window(RecNo(), Department, 'ASC', Year)<br><br>Yukarıdaki örnekte, Year alanına göre artan şekilde sıralanan bölme içinde sonuçlar bulunmaktadır.<br><br>Bilgi notuSıralama türü ve sıralama ifadesi öncelikle yalnızca RecNo ve WRank fonksiyonları ile gereklidir. |
| 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.<br><br>Bu parametre tamamen atlanabilir ve sonuç, filtre bulunmaması olmalıdır.<br><br>Örneğin:<br><br>Window(avg(Salary), Department, 'ASC', Age, EmployeeID=3 Or EmployeeID=7)<br>as wAvgSalary) as wAvgSalaryIfEmpIs3or7 |
| [start\_expr,end\_expr] | İsteğe bağlı olarak, kayar pencere işlevi için bağımsız değişkeni ayarlayın. Kayan pencere iki argüman gerektirir:<br><br><ul><li><p>Başlangıç ifadesi:&nbsp;Pencereye dahil edilecek geçerli satırdan önceki satır sayısı.</p></li><li><p>Bitiş ifadesi:&nbsp;Pencereye dahil edilecek geçerli satırdan sonraki satır sayısı.</p></li></ul><br><br>Örneğin, önceki 3 satırı, geçerli satırı ve sonraki satırı dahil etmek istiyorsanız:<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, -3, 1)<br>as WSalaryDepartment<br><br>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:<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, UNBOUNDED(), 1)<br>as WSlidingSalaryDepartment<br><br>Örneğin, geçerli satırdan üçüncü satırı ve tüm sonraki satırları dahil etmek için:<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, 3, UNBOUNDED())<br>as WSlidingSalaryDepartment |

## Örnek - Toplama içeren bir alan ekleme

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm)

#### Örnek: Toplama içeren bir alan ekleme

Komut dosyası

Veri yükleme düzenleyicisinde yeni bir sekme oluşturun, sonra aşağıdaki verileri satır içi yükleme olarak yükleyin. Sonuçları görmek için Qlik Sense uygulamasında tabloyu oluşturun.

```
Transactions:
Load
*,
Window(Avg(transaction_amount),customer_id) as AvgCustTransaction;

Load * Inline [
transaction_id, transaction_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, M, Orange
3752, 20180916, 5.75, 1, 5646471, S, Blue
3753, 20180922, 125.00, 7, 3036491, L, Black
3754, 20180922, 484.21, 13, 049681, XS, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black
3758, 20180924, 153.42, 14, 2038593, L, Red
3759, 20180925, 7.42, 5, 203521, M, Orange
3760, 20180925, 80.12, 18, 5646471, M, Blue
3761, 20180926, 3.42, 7, 3036491, XS, Black
3763, 20180926, 63.55, 12, 049681, S, Red
3763, 20180927, 177.56, 10, 2038593, L, Blue
3764, 20180927, 325.95, 8, 203521, XL, Black
];
 
```

Sonuçlar

Toplama içeren bir alan ekleme sonuçları

| transaction\_id | transaction\_date | transaction\_amount | transaction\_quantity | customer\_id | size | color\_code | AvgCustTransaction |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 3750 | 20180830 | 23.56 | 2 | 2038593 | L | Kırmızı | 103.43 |
| 3751 | 20180907 | 556.31 | 6 | 203521 | M | Turuncu | 266.775 |
| 3752 | 20180916 | 5.75 | 1 | 5646471 | S | Mavi | 42.935 |
| 3753 | 20180922 | 125.00 | 7 | 3036491 | L | Siyah | 64.21 |
| 3754 | 20180922 | 484.21 | 13 | 049681 | XS | Kırmızı | 273.88 |
| 3756 | 20180922 | 59.18 | 2 | 2038593 | M | Mavi | 103.43 |
| 3757 | 20180923 | 177.42 | 21 | 203521 | XL | Siyah | 266.775 |
| 3758 | 20180924 | 153.42 | 14 | 2038593 | L | Kırmızı | 103.43 |
| 3759 | 20180925 | 7.42 | 5 | 203521 | M | Turuncu | 266.775 |
| 3760 | 20180925 | 80.12 | 18 | 5646471 | M | Mavi | 42.935 |
| 3761 | 20180926 | 3.42 | 7 | 3036491 | XS | Siyah | 64.21 |
| 3763 | 20180926 | 63.55 | 12 | 049681 | S | Kırmızı | 273.88 |
| 3763 | 20180927 | 177.56 | 10 | 2038593 | L | Mavi | 103.43 |
| 3764 | 20180927 | 325.95 | 8 | 203521 | XL | Siyah | 266.775 |

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

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm)

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

Komut dosyası

Veri yükleme düzenleyicisinde yeni bir sekme oluşturun, sonra aşağıdaki verileri satır içi yükleme olarak yükleyin. Sonuçları görmek için Qlik Sense uygulamasında tabloyu oluşturun.

```
Transactions:
Load
*,
Window(Avg(transaction_amount),customer_id, color_code = 'Blue') as AvgCustTransaction;

Load * Inline [
transaction_id, transaction_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, M, Orange
3752, 20180916, 5.75, 1, 5646471, S, Blue
3753, 20180922, 125.00, 7, 3036491, L, Black
3754, 20180922, 484.21, 13, 049681, XS, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black
3758, 20180924, 153.42, 14, 2038593, L, Red
3759, 20180925, 7.42, 5, 203521, M, Orange
3760, 20180925, 80.12, 18, 5646471, M, Blue
3761, 20180926, 3.42, 7, 3036491, XS, Black
3763, 20180926, 63.55, 12, 049681, S, Red
3763, 20180927, 177.56, 10, 2038593, L, Blue
3764, 20180927, 325.95, 8, 203521, XL, Black
];
 
```

Sonuçlar

Belirli değerler için filtrelenmiş bir toplama içeren bir alan ekleme sonuçları

| transaction\_id | transaction\_date | transaction\_amount | transaction\_quantity | customer\_id | size | color\_code | AvgCustTransaction |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 3750 | 20180830 | 23.56 | 2 | 2038593 | L | Kırmızı | - |
| 3751 | 20180907 | 556.31 | 6 | 203521 | M | Turuncu | - |
| 3752 | 20180916 | 5.75 | 1 | 5646471 | S | Mavi | 42.94 |
| 3753 | 20180922 | 125.00 | 7 | 3036491 | L | Siyah | - |
| 3754 | 20180922 | 484.21 | 13 | 049681 | XS | Kırmızı | - |
| 3756 | 20180922 | 59.18 | 2 | 2038593 | M | Mavi | 118.4 |
| 3757 | 20180923 | 177.42 | 21 | 203521 | XL | Siyah | - |
| 3758 | 20180924 | 153.42 | 14 | 2038593 | L | Kırmızı | - |
| 3759 | 20180925 | 7.42 | 5 | 203521 | M | Turuncu | - |
| 3760 | 20180925 | 80.12 | 18 | 5646471 | M | Mavi | 42.94 |
| 3761 | 20180926 | 3.42 | 7 | 3036491 | XS | Siyah | - |
| 3763 | 20180926 | 63.55 | 12 | 049681 | S | Kırmızı | - |
| 3763 | 20180927 | 177.56 | 10 | 2038593 | L | Mavi | 118.4 |
| 3764 | 20180927 | 325.95 | 8 | 203521 | XL | Siyah | - |

## Örnek - Kayan pencereli bir alan ekleme

[](https://help.qlik.com/en-US/qlikview/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm)

#### Örnek: Kayan pencereli bir alan ekleme

Komut dosyası

Veri yükleme düzenleyicisinde yeni bir sekme oluşturun, sonra aşağıdaki verileri satır içi yükleme olarak yükleyin. Sonuçları görmek için Qlik Sense uygulamasında tabloyu oluşturun.

```
Transactions:
Load
*,
Window(Avg(transaction_amount),customer_id, 'ASC', -1, 1, 0, 1) as AvgCustTransaction;

Load * Inline [
transaction_id, transaction_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, M, Orange
3752, 20180916, 5.75, 1, 5646471, S, Blue
3753, 20180922, 125.00, 7, 3036491, L, Black
3754, 20180922, 484.21, 13, 049681, XS, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black
3758, 20180924, 153.42, 14, 2038593, L, Red
3759, 20180925, 7.42, 5, 203521, M, Orange
3760, 20180925, 80.12, 18, 5646471, M, Blue
3761, 20180926, 3.42, 7, 3036491, XS, Black
3763, 20180926, 63.55, 12, 049681, S, Red
3763, 20180927, 177.56, 10, 2038593, L, Blue
3764, 20180927, 325.95, 8, 203521, XL, Black
];
 
```

Sonuçlar

Belirli değerler için filtrelenmiş bir toplama içeren bir alan ekleme sonuçları

| transaction\_id | transaction\_date | transaction\_amount | transaction\_quantity | customer\_id | size | color\_code | AvgCustTransaction |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 3750 | 20180830 | 23.56 | 2 | 2038593 | L | Kırmızı | 41.37 |
| 3751 | 20180907 | 556.31 | 6 | 203521 | M | Turuncu | 366.865 |
| 3752 | 20180916 | 5.75 | 1 | 5646471 | S | Mavi | 42.935 |
| 3753 | 20180922 | 125.00 | 7 | 3036491 | L | Siyah | 64.21 |
| 3754 | 20180922 | 484.21 | 13 | 049681 | XS | Kırmızı | 273.88 |
| 3756 | 20180922 | 59.18 | 2 | 2038593 | M | Mavi | 106.3 |
| 3757 | 20180923 | 177.42 | 21 | 203521 | XL | Siyah | 92.42 |
| 3758 | 20180924 | 153.42 | 14 | 2038593 | L | Kırmızı | 165.49 |
| 3759 | 20180925 | 7.42 | 5 | 203521 | M | Turuncu | 166.685 |
| 3760 | 20180925 | 80.12 | 18 | 5646471 | M | Mavi | 80.12 |
| 3761 | 20180926 | 3.42 | 7 | 3036491 | XS | Siyah | 3.42 |
| 3763 | 20180926 | 63.55 | 12 | 049681 | S | Kırmızı | 177.56 |
| 3763 | 20180927 | 177.56 | 10 | 2038593 | L | Mavi | 63.55 |
| 3764 | 20180927 | 325.95 | 8 | 203521 | XL | Siyah | 325.95 |

## Sınırlamalar

Window aşağıdaki 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 fonksiyonlarını diğer Window fonksiyonlarıyla iç içe geçiremezsiniz.

* Window bir toplama işlevi içinde 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.