# 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 om bewerkingen uit te voeren zoals:

* 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/sense/May2025/Subsystems/Hub/Content/Sense_Hub/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.

Syntaxis:

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

| Argument | Beschrijving |
| --- | --- |
| main\_expr | De basis invoeruitdrukking die wordt berekend en geretourneerd door de functie. Het 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 het 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 met welke combinaties de aggregaties moeten worden toegepast. 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] | U kunt optioneel het sorteertype en de sorteeruitdrukking specificeren. 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>: 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 bijvoorbeeld [Voorbeeld - een veld met een gesorteerd schuifvenster toevoegen](https://help.qlik.com/nl-NL/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/WindowFunctions/Window.htm#Example3). |
| filter\_expr | U kunt optioneel een filteruitdrukking toevoegen. Dit is een booleaanse uitdrukking die bepaalt of de record in de berekening moet worden opgenomen of niet.<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>Om alle eerdere rijen of alle volgende rijen aan te geven kunt u de Unbounded()-functie gebruiken. Bijvoorbeeld: om alle voorgaande rijen, de huidige rij en de volgende rij toe te voegen:<br><br>Window(concat(Text(Salary),'-'), Department, 'NONE', 1, UNBOUNDED(), 1) as WSlidingSalaryDepartment<br><br>Bijvoorbeeld: om de derde rij uit de huidige rij en de daaropvolgende rijen toe te voegen:<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/sense/Subsystems/Hub/Content/Sense_Hub/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 met een aggregatie

| 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/sense/Subsystems/Hub/Content/Sense_Hub/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.

```
[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/sense/Subsystems/Hub/Content/Sense_Hub/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.

```
[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/sense/Subsystems/Hub/Content/Sense_Hub/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.

```
[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 met een aggregatie, 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 leeftijd.

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.

* Diagramuitdrukkingen bieden geen ondersteuning voor Window.

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

* Window kan niet worden gebruikt in een aggregatiefunctie.

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

* Window moet de hele tabel kunnen scannen.

* WRank(), RecNo() en RowNo() kunnen niet worden gebruikt met Window wanneer de schuifvensterfunctionaliteit 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.