# Window - Scriptfunctie

Window() voert berekeningen uit op meerdere rijen en produceert een waarde per rij.

U kunt de Window-functies gebruiken voor de volgende bewerkingen:

* Een afzonderlijke getalwaarde in een rij vergelijken met het gemiddelde, maximum of minimum binnen de kolom.

* De positie van een individuele waarde berekenen, hetzij binnen de kolom of in de gehele tabel.

De Window-functie verandert het aantal records in de tabel niet, maar kan wel vergelijke taken uitvoeren zoals aggregatie-, relationele en bereikfuncties.

De Window-functie moet een cache hebben binnen de LOAD-opdracht van de tabel waar u aan werkt om aan de tabel toe te voegen. Bijvoorbeeld:

```
[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 ondersteunt algemene functies zoals afronding of basale numerieke bewerkingen. Bijvoorbeeld:

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

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

U kunt een sliding window voor de Window-functie definiëren. Dit stelt het aantal gebruikte rijen in wanneer de Window-functie op de huidige rij wordt toegepast. U kunt het venster bijvoorbeeld instellen om drie vorige rijen en de drie daarop volgende rijen te zijn:

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

Syntaxis:

Window (Window (input\_expr, [partition1, partition2, ...], [sort\_type, [sort\_expr]],[filter\_expr], [start\_expr,end\_expr]))

Gegevenstype retourneren: een nieuw veld dat wordt toegevoegd aan de resulterende tabel die is gemaakt door de LOAD‑opdracht.

Argumenten:

Argumenten

| Argument | Beschrijving |
| --- | --- |
| input\_expr | De invoeruitdrukking die wordt berekend en geretourneerd door de functie. Dit moet een uitdrukking zijn die is gebaseerd op een aggregatie, zoals Median(Salary). Bijvoorbeeld:<br><br>Window(Median(Salary)) as MedianSalary<br><br>De invoer kan ook een veldnaam zijn waarop geen aggregatie is toegepast. In dit geval behandelt Window dit alsof de Only()-functie is toegepast op dat veld. Bijvoorbeeld:<br><br>Window(Salary,Department) as WSalary<br><br>U kunt eventueel partitionering definiëren met de invoeruitdrukking. Partitionering is hetzelfde als de groepering die wordt bereikt met de group by-clausule. Het enige verschil is dat het resultaat wordt toegevoegd als een nieuwe kolom in de invoertabel. Bij partionering wordt het aantal records van de invoertabel niet verminderd. Er kunnen meerdere partitievelden worden gedefinieerd.<br><br>Voorbeeld:<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 | Na input\_expr kunt u een willekeurig aantal partities definiëren. Partities zijn velden die definiëren welke combinaties worden toegepast op de aggregaties. De aggregatie wordt bij elke partitie afzonderlijk toegepast. Bijvoorbeeld:<br><br>Window(Avg(Salary), Unit, Department, Country) as AvgSalary<br><br>In het bovenstaande voorbeeld zijn de partities Unit, Department en Country.<br><br>Partities zijn niet verplicht, maar zijn vereist voor een juiste uitvoering van de window-functie op velden. |
| sort\_type, [sort\_expr]] | Geef desgewenst het sorteertype en de sorteeruitdrukking op. sort\_type kan één of twee waarden bevatten:<br><br><ul><li><p><span>ASC</span>:&nbsp;Oplopende sortering.</p></li><li><p><span>DESC</span>:&nbsp;Aflopende sortering.</p></li></ul><br><br>Als u sort\_type definieert, moet u een sorteeruitdrukking definiëren. Dit is een uitdrukking die de volgorde van de rijen in een partitie bepaalt.<br><br>Bijvoorbeeld:<br><br>Window(RecNo(), Department, 'ASC', Year)<br><br>In het bovenstaande voorbeeld, worden de resultaten in de partitie in oplopende volgorde gesorteerd voor het veld Year.<br><br>InformatieHet sorteertype en de sorteeruitdrukking zijn doorgaans alleen vereist bij de functies RecNo en WRank. |
| filter\_expr | U kunt optioneel een filteruitdrukking toevoegen. Dit is een booleaanse uitdrukking die bepaalt of het record wel of niet in de berekening moet worden opgenomen.<br><br>Deze parameter kan volledig worden weggelaten, wat ertoe leidt dat er geen filter is.<br><br>Bijvoorbeeld:<br><br>Window(avg(Salary), Department, 'ASC', Age, EmployeeID=3 Or EmployeeID=7)<br>as wAvgSalary) as wAvgSalaryIfEmpIs3or7 |
| [start\_expr,end\_expr] | U kunt desgewenst het argument voor de functiontaliteit sliding window instellen. Een schuifvenster vereist twee argumenten:<br><br><ul><li><p>Beginuitdrukking:&nbsp;het aantal rijen vóór de huidige rij om toe te voegen aan het venster.</p></li><li><p>Einduitdrukking:&nbsp;het aantal rijen na de huidige rij om toe te voegen aan het venster.</p></li></ul><br><br>Als u bijvoorbeeld 3 voorgaande rijen, de huidige rij en de volgende rij wilt toevoegen:<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, -3, 1)<br>as WSalaryDepartment<br><br>Gebruik de functie Unbounded() om alle voorgaande of daaropvolgende rijen aan te geven. Als u bijvoorbeeld alle voorgaande rijen, de huidige rij en de volgende rij wilt opnemen:<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, UNBOUNDED(), 1)<br>as WSlidingSalaryDepartment<br><br>Bijvoorbeeld al u de derde rij van de huidige rij alle daaropvolgende rijen wilt opnemen:<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, 3, UNBOUNDED())<br>as WSlidingSalaryDepartment |

## Voorbeeld: een veld met een aggregatie toevoegen

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

#### Voorbeeld: een veld met een aggregatie toevoegen

Load-script

Maak een nieuw tabblad in de editor voor laden van gegevens en laad de volgende gegevens als een inline load. Maak de onderstaande tabel in Qlik Sense om de resultaten te bekijken.

```
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
];
 
```

Resultaten

Resultaten voor het toevoegen van een veld dat een aggregatie bevat

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

## Voorbeeld: een veld met een aggregatie toevoegen, gefilterd op specifieke waarden

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

#### Voorbeeld: een veld met een aggregatie toevoegen, gefilterd op specifieke waarden

Load-script

Maak een nieuw tabblad in de editor voor laden van gegevens en laad de volgende gegevens als een inline load. Maak de onderstaande tabel in Qlik Sense om de resultaten te bekijken.

```
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
];
 
```

Resultaten

Resultaten voor het toevoegen van een veld met een aggregatie, gefilterd op specifieke waarden

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

## Voorbeeld: een veld met een schuifvenster toevoegen

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

#### Voorbeeld: een veld met een schuifvenster toevoegen

Load-script

Maak een nieuw tabblad in de editor voor laden van gegevens en laad de volgende gegevens als een inline load. Maak de onderstaande tabel in Qlik Sense om de resultaten te bekijken.

```
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
];
 
```

Resultaten

Resultaten voor het toevoegen van een veld met een aggregatie, gefilterd op specifieke waarden

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

## Beperkingen

Window heeft de volgende beperkingen:

* Window is een functie die veel resources gebruikt, vooral wat betreft geheugen.

* Window wordt niet ondersteund in Qlik Sense Mobile.

* Diagramuitdrukkingen bieden geen ondersteuning voor Window.

* U kunt Window-functies niet nesten binnen andere Window-functies.

* Window kan niet binnen een aggregatiefunctie worden gebruikt.

* Window moet in staat zijn de volledige tabel te scannen.

* WRank(), RecNo(), en RowNo() kunnen niet worden gebruikt met Window als de sliding window wordt gebruikt.