# Window Scriptfunctie

Window() voert berekeningen uit op basis van meerdere rijen van een sectie (of "kader") van een volledige tabel, en produceert een enkele waarde voor elke rij.

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

* Een individuele getalwaarde in een rij vergelijken met het gemiddelde, maximum of minimum binnen het kader van de tabel.

* De positie van een individuele waarde berekenen, hetzij binnen het kader 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 functie Window moet worden opgenomen in de LOAD-opdracht van de tabel waarmee u werkt, of er moet naar de tabel worden verwezen, zoals met een Resident-LOAD. Zie bijvoorbeeld [Voorbeeld: een veld met een aggregatie toevoegen](https://help.qlik.com/nl-NL/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm#Example2).

De naam kan worden weggelaten, maar dit leidt ertoe dat de veldnaam wordt ingesteld op de volledige uitdrukking van de Window functie. Bijvoorbeeld AvgDepSalary in het onderstaande voorbeeld:

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

Informatie

Het wordt aanbevolen om de functie Window een veldnaam te geven.

Window ondersteunt algemene functies zoals afronding of basale numerieke bewerkingen. Bijvoorbeeld:

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

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

Informatie

De functie Window scant de volledige tabel. Met betrekking tot het geheugengebruik zijn de kosten van het scannen gelijk aan het aantal velden in de tabel. Een tabel met een paar velden, naast de velden waarop de Window functie werkt, verdient altijd de voorkeur boven een tabel met veel velden.

Over het algemeen verbruikt een Window functie 2-4 keer zoveel geheugen en duurt het 2-4 keer langer om opnieuw te laden in vergelijking met een vergelijkbare scriptbewerking die dezelfde aggregatie, een Where clausule (filter), een Group by clausule (partitie) en een Order by clausule (sorteren) bevat.

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

Gegevenstype retourneren: één waarde per rij, die gecombineerd kan worden met of gebruikt kan worden in een andere uitdrukking, of direct toegevoegd kan worden aan de resulterende tabel die gemaakt is met de LOAD-instructie.

Argumenten

| Argumenten | Beschrijving |
| --- | --- |
| main\_expr | De basis 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 uitdrukking kan ook een veldnaam zijn zonder dat aggregatie is toegepast. In dit geval behandelt Window dit alsof de Only()-functie is toegepast op dat veld. Bijvoorbeeld:<br><br>Window(Salary) as WSalary<br><br>Uitdrukkingen die geneste aggregatiefuncties of geneste window-functies bevatten, zoals Window(Sum(Avg(Salary))) of Window(Sum(Window(Salary))), zijn niet toegestaan. |
| partition1, partition2 | Na main\_expr kunt u een willekeurig aantal partities definiëren. Partities zijn velden die definiëren welke combinaties worden toegepast op de aggregaties. Bijvoorbeeld:<br><br>Window(Avg(Salary), Department) as AvgDepSalary<br><br>Dit berekent het gemiddelde salaris voor elke afdeling.<br><br>Als er meerdere partitieparameters worden opgegeven, wordt de aggregatie toegepast op elke rij met een unieke combinatie van partitievelden. Bijvoorbeeld:<br><br>Window(Avg(Salary), Department, Country) as AvgDepSalaryPerCountry<br><br>Dit berekent het gemiddelde salaris voor elke afdeling in elk land. Dubbele afdelingen in verschillende landen, zoals Marketing in Zweden en Marketing in Canada, worden als verschillende partities behandeld.<br><br>Partitionering is vergelijkbaar met de groepering die wordt bereikt met de group by clausule. Partitioneren vermindert het aantal records niet in vergelijking met de invoertabel. |
| sort\_type, [sort\_expr] | Geef desgewenst het sorteertype en de sorteeruitdrukking op. Dit bepaalt de volgorde waarin de aggregatie wordt uitgevoerd. sort\_type is een constante tekenreeks en kan een van drie waarden hebben:<br><br><ul> <li> <p> <span>ASC</span>: oplopende sortering.</p> </li> <li> <p> <span>DESC</span>:&nbsp;Aflopende sortering.</p> </li> <li> <p>NONE</p> </li> </ul><br><br>Als u sort\_type definieert als ASC of DESC, moet u een sorteeruitdrukking definiëren. Met sort\_type NONE hoeft er geen sorteeruitdrukking worden opgegeven. De sorteeruitdrukking bepaalt de volgorde van de rijen in een partitie.<br><br>Bijvoorbeeld:<br><br>Window(RecNo(), Department, 'ASC', Year)<br><br>In het bovenstaande voorbeeld wordt de aggregratie in de partitie in oplopende volgorde uitgevoerd door het veld Year.<br><br>De sorteerparameters beïnvloeden ook de volgorde waarin een schuifvenster een tabel verwerkt. Zie [Voorbeeld - een veld met een gesorteerd schuifvenster toevoegen](https://help.qlik.com/nl-NL/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/WindowFunctions/window.htm#Example3) voor een voorbeeld. |
| 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>Als filter\_expr wordt opgegeven, moet er een sorteertype worden opgenomen. Als er geen sorteertype is gedefinieerd, dan kan het argument worden geïnterpreteerd als een partitieparameter in plaats van een filteruitdrukking. De parameter filter\_expr kan volledig worden weggelaten of er kan een waarheidsgetrouwe waarde worden opgenomen. In beide gevallen worden er geen filters gebruikt, zodat er geen rijen worden uitgesloten.<br><br>Bijvoorbeeld:<br><br>Window(avg(Salary), Department, 'ASC', Age, Country='US' Or Country='Canada') as AvgDepSalaryInUsOrCanada<br><br>De bovenstaande Window-instructie zal elke rij wegfilteren waarvan het veld Country niet US of Canada is, waardoor die rijen worden uitgesloten van de aggregatie. Er zullen nog steeds uitvoerwaarden zijn voor de rijen die werden uitgefilterd, maar net als alle andere uitvoerrijen zullen deze alleen samengevoegde resultaten bevatten van rijen die niet door het filter zijn uitgezonderd. |
| start\_expr,end\_expr | Stel de argumenten voor de schuifvensterfunctie in (optioneel). Dit beperkt het aantal rijen dat geaggregeerd moet worden nog verder. Elke uitvoerrij bevat alleen (geaggregeerde) resultaten van een aantal rijen vóór en na de huidige rij. Een schuifvenster vereist twee argumenten (start\_expr,end\_expr). Als deze argumenten worden gegeven, dan mag het sorteertype niet worden overgeslagen. Anders kunnen de argumenten worden geïnterpreteerd als een partitieparameter in plaats van een schuifvenster. De parameter start\_expr,end\_expr bestaat uit:<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, 'NONE', 1, -3, 1) as WSlidingSalaryDepartment<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, 'NONE', 1, UNBOUNDED(), 1) 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, 'NONE', 1, 3, UNBOUNDED()) as WSlidingSalaryDepartment<br><br>In de bovenstaande voorbeelden wordt het sorteertype NONE gegeven zodat het script onderscheid kan maken tussen partitie-argumenten en de parameters die na het sorteertype komen. |

## 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.

```
[Employees]:
Load 
	*,
	Window(avg(Salary), Department) as AvgDepSalary
Inline [
	Name, Department, Salary, Age, Year, Country
	David, Sales, 11, 32, 2019, Canada
	Sara, Sales, 22, 25, 2022, Sweden
	Nils, Marketing, 33, 18, 2022, Sweden
	Patrick, Marketing, 44, 43, 2022, Canada
	Anna, Sales, 55, 33, 2023, Canada
	Johan, Sales, 66, 26, 2025, Sweden
	Olle, Marketing, 77, 19, 2023, Sweden
	Bonnie, Marketing, 88, 44, 2023, US
]; 
```

Resultaten

Resultaten voor het toevoegen van een veld dat een aggregatie bevat

| Name | Department | Salary | Age | Year | Country | AvgDepSalary |
| --- | --- | --- | --- | --- | --- | --- |
| David | Sales | 11 | 32 | 2019 | Canada | 39 |
| Sara | Sales | 22 | 25 | 2022 | Sweden | 39 |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | 61 |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | 61 |
| Anna | Sales | 55 | 33 | 2023 | Canada | 39 |
| Johan | Sales | 66 | 26 | 2025 | Sweden | 39 |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | 61 |
| Bonnie | Marketing | 88 | 44 | 2023 | US | 61 |

## 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 toevoegen met een aggregatie die is 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.

```
[Employees]:
Load 
*,
Window(avg(Salary), Department, 'NONE', Country = 'Sweden') as AvgDepSalarySweden
Inline [
	Name, Department, Salary, Age, Year, Country
	David, Sales, 11, 32, 2019, Canada
	Sara, Sales, 22, 25, 2022, Sweden
	Nils, Marketing, 33, 18, 2022, Sweden
	Patrick, Marketing, 44, 43, 2022, Canada
	Anna, Sales, 55, 33, 2023, Canada
	Johan, Sales, 66, 26, 2025, Sweden
	Olle, Marketing, 77, 19, 2023, Sweden
	Bonnie, Marketing, 88, 44, 2023, US
];
```

Resultaten

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

| Name | Department | Salary | Age | Year | Country | AvgDepSalarySweden |
| --- | --- | --- | --- | --- | --- | --- |
| David | Sales | 11 | 32 | 2019 | Canada | 44 |
| Sara | Sales | 22 | 25 | 2022 | Sweden | 44 |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | 55 |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | 55 |
| Anna | Sales | 55 | 33 | 2023 | Canada | 44 |
| Johan | Sales | 66 | 26 | 2025 | Sweden | 44 |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | 55 |
| Bonnie | Marketing | 88 | 44 | 2023 | US | 55 |

## 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 toevoegen met een verschuivend venster

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.

```
[Employees]:
Load 
	*,
	Window(concat(Text(Salary),'-'), Department, 'NONE', -1, 1) as SlidingWindow
Inline [
	Name, Department, Salary, Age, Year, Country
	David, Sales, 11, 32, 2019, Canada
	Sara, Sales, 22, 25, 2022, Sweden
	Nils, Marketing, 33, 18, 2022, Sweden
	Patrick, Marketing, 44, 43, 2022, Canada
	Anna, Sales, 55, 33, 2023, Canada
	Johan, Sales, 66, 26, 2025, Sweden
	Olle, Marketing, 77, 19, 2023, Sweden
	Bonnie, Marketing, 88, 44, 2023, US
];
```

Resultaten

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

| Name | Department | Salary | Age | Year | Country | SlidingWindow |
| --- | --- | --- | --- | --- | --- | --- |
| David | Sales | 11 | 32 | 2019 | Canada | 11-22 |
| Sara | Sales | 22 | 25 | 2022 | Sweden | 11-22-55 |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | 33-44 |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | 33-44-77 |
| Anna | Sales | 55 | 33 | 2023 | Canada | 22-55-66 |
| Johan | Sales | 66 | 26 | 2025 | Sweden | 55-66 |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | 44-77-88 |
| Bonnie | Marketing | 88 | 44 | 2023 | US | 77-88 |

## Voorbeeld - een veld met een gesorteerd schuifvenster toevoegen

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

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

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.

```
[Employees]:
Load 
	*,
	Window(concat(Text(Salary),'-'), Department, 'ASC', Age, -1, 1) as SortedSlidingWindow
Inline [
	Name, Department, Salary, Age, Year, Country
	David, Sales, 11, 32, 2019, Canada
	Sara, Sales, 22, 25, 2022, Sweden
	Nils, Marketing, 33, 18, 2022, Sweden
	Patrick, Marketing, 44, 43, 2022, Canada
	Anna, Sales, 55, 33, 2023, Canada
	Johan, Sales, 66, 26, 2025, Sweden
	Olle, Marketing, 77, 19, 2023, Sweden
	Bonnie, Marketing, 88, 44, 2023, US
];
```

Resultaten

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

| Name | Department | Salary | Age | Year | Country | SortedSlidingWindow |
| --- | --- | --- | --- | --- | --- | --- |
| David | Sales | 11 | 32 | 2019 | Canada | 11-55-66 |
| Sara | Sales | 22 | 25 | 2022 | Sweden | 22-66 |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | 33-77-88 |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | 44-77 |
| Anna | Sales | 55 | 33 | 2023 | Canada | 11-55 |
| Johan | Sales | 66 | 26 | 2025 | Sweden | 11-22-66 |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | 33-44-77 |
| Bonnie | Marketing | 88 | 44 | 2023 | US | 33-88 |

Om beter te begrijpen hoe de partities en sorteervolgorde de aggregaties in een schuifvenster beïnvloeden, sorteert u de tabel oplopend op naam.

Resultaten voor het toevoegen van een veld dat een aggregatie bevat die is gefilterd op specifieke waarden

| Name | Department | Salary | Age | Year | Country | SortedSlidingWindow |
| --- | --- | --- | --- | --- | --- | --- |
| Anna | Sales | 55 | 33 | 2023 | Canada | 11-55 |
| Bonnie | Marketing | 88 | 44 | 2023 | US | 33-88 |
| David | Sales | 11 | 32 | 2019 | Canada | 11-55-66 |
| Johan | Sales | 66 | 26 | 2025 | Sweden | 11-22-66 |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | 33-77-88 |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | 33-44-77 |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | 44-77 |
| Sara | Sales | 22 | 25 | 2022 | Sweden | 22-66 |

In de rij voor Johan heeft de aggregatie de salariswaarden voor David en Sara opgenomen. Dit zijn de voorgaande en volgende rijen binnen de partitie Verkoopafdeling, gesorteerd op naam.

Voor een ander voorbeeld dat laat zien welke rijen zijn opgenomen, wijzigt u de uitdrukking Windows van Window(concat(Text(Salary),'-'), Department, 'ASC', Age, -1, 1) in Window(concat(Text(Name),'-'), Department, 'ASC', Age, -1, 1) en laadt u opnieuw. De waarden in SortedSlidingWindow in de onderstaande tabel geven de naam van de voorgaande en volgende rijen binnen de partitie Verkoop.

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

| Name | Department | Salary | Age | Year | Country | SortedSlidingWindow |
| --- | --- | --- | --- | --- | --- | --- |
| Anna | Sales | 55 | 33 | 2023 | Canada | Anna-David |
| Bonnie | Marketing | 88 | 44 | 2023 | US | Bonnie-Nils |
| David | Sales | 11 | 32 | 2019 | Canada | Anna-David-Johan |
| Johan | Sales | 66 | 26 | 2025 | Sweden | David-Johan-Sara |
| Nils | Marketing | 33 | 18 | 2022 | Sweden | Bonnie-Nils-Olle |
| Olle | Marketing | 77 | 19 | 2023 | Sweden | Nils-Olle-Patrick |
| Patrick | Marketing | 44 | 43 | 2022 | Canada | Olle-Patrick |
| Sara | Sales | 22 | 25 | 2022 | Sweden | Johan-Sara |

## 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.

* Grafiekuitdrukkingen bieden geen ondersteuning voor Window.

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

* Window kan niet binnen een aggregatiefunctie worden gebruikt.

* Window kan niet worden gebruikt in een LOAD-instructie met een groeperen op-clausule.

* Window kan niet worden gebruikt in een load-instructie met een where-clausule

* 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.

* Wanneer de schuifvensterfunctionaliteit wordt gebruikt, neemt de berekeningstijd toe met de grootte van het venster. Grote tabellen in combinatie met grote vensters moeten over het algemeen worden vermeden.