Window Scriptfunctie | QlikView Help
Ga naar hoofdinhoud Ga naar aanvullende inhoud

Window Scriptfunctie

Laatst bijgewerkt: 07-10-2026

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.

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 (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:

Window(Median(Salary)) as MedianSalary

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:

Window(Salary) as WSalary

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:

Window(Avg(Salary), Department) as AvgDepSalary

Dit berekent het gemiddelde salaris voor elke afdeling.

Als er meerdere partitieparameters worden opgegeven, wordt de aggregatie toegepast op elke rij met een unieke combinatie van partitievelden. Bijvoorbeeld:

Window(Avg(Salary), Department, Country) as AvgDepSalaryPerCountry

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.

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:

  • ASC: oplopende sortering.

  • DESC: Aflopende sortering.

  • NONE

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.

Bijvoorbeeld:

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

In het bovenstaande voorbeeld wordt de aggregratie in de partitie in oplopende volgorde uitgevoerd door het veld Year.

De sorteerparameters beïnvloeden ook de volgorde waarin een schuifvenster een tabel verwerkt. Zie Voorbeeld - een veld met een gesorteerd schuifvenster toevoegen 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.

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.

Bijvoorbeeld:

Window(avg(Salary), Department, 'ASC', Age, Country='US' Or Country='Canada') as AvgDepSalaryInUsOrCanada

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:

  • Beginuitdrukking: het aantal rijen vóór de huidige rij om toe te voegen aan het venster.

  • Einduitdrukking: het aantal rijen na de huidige rij om toe te voegen aan het venster.

Als u bijvoorbeeld 3 voorgaande rijen, de huidige rij en de volgende rij wilt toevoegen:

Window(concat(Text(Salary),'-'), Department, 'NONE', 1, -3, 1) as WSlidingSalaryDepartment

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:

Window(concat(Text(Salary),'-'), Department, 'NONE', 1, UNBOUNDED(), 1) as WSlidingSalaryDepartment

Bijvoorbeeld al u de derde rij van de huidige rij alle daaropvolgende rijen wilt opnemen:

Window(concat(Text(Salary),'-'), Department, 'NONE', 1, 3, UNBOUNDED()) as WSlidingSalaryDepartment

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

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

Voorbeeld: een veld met een schuifvenster toevoegen

Voorbeeld - een veld met een gesorteerd schuifvenster toevoegen

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.

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een tikfout, een ontbrekende stap of een technische fout – laat het ons weten!

Neem deel aan het Analytics Modernization Program

Remove banner from view

Moderniseer zonder uw waardevolle QlikView-apps op het spel te zetten met het Analytics Modernization Program. Klik hier voor meer informatie of om contact op te nemen: ampquestions@qlik.com