# Window – Skriptfunktion

Window() führt Berechnungen für mehrere Zeilen durch und gibt einen getrennten Wert für jede Zeile zurück.

Sie können die Window-Funktionen verwenden, um Vorgänge wie die Folgenden durchzuführen:

* Vergleichen eines einzelnen Zahlenwerts in einer Zeile mit dem Durchschnitt, Maximum oder Minimum in der Spalte.

* Den Rang eines einzelnen Werts entweder in der Spalte oder in der ganzen Tabelle berechnen.

Die Window-Funktion ändert nicht die Anzahl der Datensätze in der Tabelle, kann jedoch ähnliche Aufgaben als Aggregierung, relationale und Bereichsfunktionen durchführen.

Zum Hinzufügen zur Tabelle muss die Window-Funktion einen Cache innerhalb des LOAD-Befehls der Tabelle enthalten, mit der Sie arbeiten. Zum Beispiel:

```
[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 unterstützt allgemeine Funktionen wie Rundungen oder grundlegende numerische Operationen. Zum Beispiel:

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

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

Sie können ein gleitendes Fenster für die Window-Funktion definieren. Damit wird die Anzahl der Zeilen festgelegt, die beim Anwenden der Window-Funktion auf die aktuelle Zeile verwendet werden. Beispielsweise können Sie das Intervall auf die 3 vorherigen und die 3 darauffolgenden Zeilen festlegen.

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

Syntax:

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

Datentyp zurückgeben: Ein neues Feld, das der durch den LOAD-Befehl erstellten Tabelle hinzugefügt wurde.

Argumente:

Argumente

| Argument | Beschreibung |
| --- | --- |
| input\_expr | Die Eingabeformel wird von der Funktion berechnet und zurückgegeben. Es muss sich um eine Formel handeln, die auf einer Aggregierung basiert, z. B. Median(Salary). Hier ein Beispiel:<br><br>Window(Median(Salary)) as MedianSalary<br><br>Die Eingabe kann auch ein Feldname ohne angewendete Aggregierung sein. In diesem Fall behandelt Window sie so, als würde die Funktion Only() auf dieses Feld angewendet. Hier ein Beispiel:<br><br>Window(Salary,Department) as WSalary<br><br>Optional können Sie Partitionierung mit der Eingabeformel definieren. Partitionierung ist das Gleiche wie die Gruppierung, die durch die group by-Bedingung erzielt wird, mit dem Unterschied, dass das Ergebnis als neue Spalte zur Eingabetabelle hinzugefügt wird. Partitionierung reduziert die Anzahl der Datensätze der Eingabetabelle nicht. Es können mehrere Partitionsfelder definiert werden.<br><br>Beispiel:<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 | Nach input\_expr können Sie eine beliebige Anzahl Partitionen definieren. Partitionen sind Felder, die definieren, in welchen Kombinationen die Aggregierungen angewendet werden sollen. Die Aggregierung wird für jede Partition einzeln angewendet. Hier ein Beispiel:<br><br>Window(Avg(Salary), Unit, Department, Country) as AvgSalary<br><br>Im obigen Beispiel sind die Partitionen Unit, Department und Country.<br><br>Partitionen sind nicht obligatorisch, aber für die ordnungsgemäße Fenstereinteilung der Felder erforderlich. |
| sort\_type, [sort\_expr]] | Geben Sie optional den Sortiertyp und die Sortierformel an. sort\_type kann einen von zwei Werten haben:<br><br><ul><li><p><span>ASC</span>&nbsp;Aufsteigende Sortierung.</p></li><li><p><span>DESC</span>&nbsp;Absteigende Sortierung.</p></li></ul><br><br>Wenn Sie „sort\_type“ definieren, müssen Sie eine Sortierformel definieren. Dies ist eine Formel, die über die Reihenfolge der Zeilen innerhalb einer Partition entscheidet.<br><br>Hier ein Beispiel:<br><br>Window(RecNo(), Department, 'ASC', Year)<br><br>Im obigen Beispiel werden die Ergebnisse innerhalb der Partition aufsteigend durch das Feld Year sortiert.<br><br>InformationshinweisDer Sortiertyp und die Sortierformel sind hauptsächlich nur für die Funktionen RecNo und WRank erforderlich. |
| filter\_expr | Fügen Sie optional eine Filterformel hinzu. Dies ist eine Boolesche Formel, die entscheidet, ob ein Datensatz in die Berechnung eingeschlossen werden soll oder nicht.<br><br>Der Parameter kann vollständig ausgelassen werden, und das Ergebnis sollte sein, dass kein Filter vorhanden ist.<br><br>Hier ein Beispiel:<br><br>Window(avg(Salary), Department, 'ASC', Age, EmployeeID=3 Or EmployeeID=7)<br>as wAvgSalary) as wAvgSalaryIfEmpIs3or7 |
| [start\_expr,end\_expr] | Legen Sie optional das Argument für die gleitende Fensterfunktion fest. Ein Sliding Window erfordert zwei Argumente:<br><br><ul><li><p>Startformel:&nbsp;Die Anzahl der Zeilen vor der aktuellen Zeile, die in das Fenster eingeschlossen werden sollen.</p></li><li><p>Endformel:&nbsp;Die Anzahl der Zeilen nach der aktuellen Zeile, die in das Fenster eingeschlossen werden sollen.</p></li></ul><br><br>Wenn Sie beispielsweise die 3 vorherigen Zeilen, die aktuelle Zeile und die nachfolgende Zeile einschließen möchten:<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, -3, 1)<br>as WSalaryDepartment<br><br>Um alle vorangehenden oder alle nachfolgenden Zeilen anzugeben, können Sie die Funktion Unbounded() verwenden. Wenn Sie zum Beispiel alle vorangehenden Zeilen, die aktuelle Zeile und die nachfolgende Zeile einschließen möchten:<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, UNBOUNDED(), 1)<br>as WSlidingSalaryDepartment<br><br>Wenn Sie zum Beispiel die dritte Zeile ab der aktuellen Zeile und alle nachfolgenden Zeilen einschließen möchten:<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, 3, UNBOUNDED())<br>as WSlidingSalaryDepartment |

## Beispiel: Hinzufügen eines Felds, das eine Aggregierung enthält

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

#### Beispiel: Hinzufügen eines Felds, das eine Aggregierung enthält

Ladeskript

Erstellen Sie eine neue Registerkarte im Dateneditor und laden Sie die folgenden Daten als Inline-Ladevorgang: Erstellen Sie die Tabelle unten in Qlik Sense, um die Ergebnisse anzuzeigen.

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

Ergebnisse

Ergebnisse für das Hinzufügen eines Felds mit einer Aggregierung

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

## Beispiel:– Hinzufügen eines Felds, das eine nach bestimmten Werten gefilterte Aggregierung enthält

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

#### Beispiel: Hinzufügen eines Felds, das eine nach bestimmten Werten gefilterte Aggregierung enthält

Ladeskript

Erstellen Sie eine neue Registerkarte im Dateneditor und laden Sie die folgenden Daten als Inline-Ladevorgang: Erstellen Sie die Tabelle unten in Qlik Sense, um die Ergebnisse anzuzeigen.

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

Ergebnisse

Ergebnisse für das Hinzufügen eines Felds, das eine nach bestimmten Werten gefilterte Aggregierung enthält

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

## Beispiel: Hinzufügen eines Felds mit einem Sliding Window

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

#### Beispiel: Hinzufügen eines Felds mit einem Sliding Window

Ladeskript

Erstellen Sie eine neue Registerkarte im Dateneditor und laden Sie die folgenden Daten als Inline-Ladevorgang: Erstellen Sie die Tabelle unten in Qlik Sense, um die Ergebnisse anzuzeigen.

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

Ergebnisse

Ergebnisse für das Hinzufügen eines Felds, das eine nach bestimmten Werten gefilterte Aggregierung enthält

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

## Beschränkungen

Window weist die folgenden Beschränkungen auf:

* Window ist eine ressourcenintensive Funktion, vor allem hinsichtlich der Arbeitsspeichernutzung.

* Window wird in Qlik Sense Mobile nicht unterstützt.

* Diagrammformeln unterstützen Window nicht.

* Sie können Window-Funktionen nicht in anderen Window-Funktionen verschachteln.

* Window kann nicht innerhalb einer Aggregierungsfunktion verwendet werden.

* Window muss die ganze Tabelle scannen können.

* WRank(), RecNo() und RowNo() können nicht mit Window verwendet werden, wenn die Funktionalität der gleitenden Fenster verwendet wird.