# Window - Fonction de script

Window() effectue des calculs à partir de différentes lignes, produisant une valeur pour chaque ligne séparément.

Vous pouvez utiliser les fonctions Window pour effectuer des opérations telles que les suivantes :

* Comparaison d'une valeur numérique individuelle d'une ligne à la moyenne, la valeur maximale ou la valeur minimale de la colonne.

* Calculer le classement d'une valeur individuelle, soit dans la colonne, soit dans la table toute entière.

La fonction Window ne modifie pas le nombre d'enregistrements de la table, mais elle peut tout de même effectuer des tâches similaires telles que des fonctions d'agrégation, relationnelles et de plage.

La fonction Window doit comporter un cache dans l'instruction LOAD de la table que vous utilisez pour pouvoir l'ajouter à la table. Par exemple :

```
[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 supporte des fonctions générales telles que l'arrondi ou des opérations numériques de base. Par exemple :

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

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

Vous pouvez définir une fenêtre coulissante pour la fonction Window. Cela définit le nombre de lignes utilisées lors de l'application de la fonction Window à la ligne active. Par exemple, vous pouvez définir la fenêtre de sorte qu'elle corresponde aux trois lignes précédentes et aux trois lignes suivantes :

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

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

Type de données renvoyé : nouveau champ ajouté à la table obtenue créée par l'instruction LOAD.

Arguments

| Argument | Description |
| --- | --- |
| input\_expr | Expression d'entrée calculée et renvoyée par la fonction. Il doit s'agir de n'importe quelle expression basée sur une agrégation, par exemple Median(Salary). Par exemple :<br><br>Window(Median(Salary)) as MedianSalary<br><br>L'entrée peut également être un nom de champ sans aucune agrégation appliquée. Dans ce cas, Window la traite comme si la fonction Only() était appliquée à ce champ. Par exemple :<br><br>Window(Salary,Department) as WSalary<br><br>Vous pouvez éventuellement définir un partitionnement avec l'expression d'entrée. Le partitionnement est identique au regroupement obtenu par la clause group by, à la différence près que le résultat est ajouté sous forme de nouvelle colonne à la table d'entrée. Le partitionnement ne réduit pas le nombre d'enregistrements de la table d'entrée. Il est possible de définir plusieurs champs de partition.<br><br>Exemple :<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 | Après input\_expr, vous pouvez définir un nombre illimité de partitions. Les partitions sont des champs qui définissent les combinaisons à appliquer avec les agrégations. L'agrégation est appliquée séparément avec chaque partition. Par exemple :<br><br>Window(Avg(Salary), Unit, Department, Country) as AvgSalary<br><br>Dans l'exemple ci-dessus, les partitions sont Unit, Department et Country.<br><br>Les partitions ne sont pas obligatoires, mais nécessaires pour la mise en fenêtres appropriée des champs. |
| sort\_type, [sort\_expr]] | Vous pouvez éventuellement spécifier le type de tri et l'expression de tri. sort\_type peut prendre une des deux valeurs suivantes :<br><br><ul><li><p><span>ASC</span>&nbsp;:&nbsp;tri croissant.</p></li><li><p><span>DESC</span>&nbsp;:&nbsp;tri décroissant.</p></li></ul><br><br>Si vous définissez sort\_type, vous devez définir une expression de tri. Il s'agit d'une expression qui décide du tri des lignes d'une partition.<br><br>Par exemple :<br><br>Window(RecNo(), Department, 'ASC', Year)<br><br>Dans l'exemple ci-dessus, vous voyez les résultats, au sein de la partition, du tri dans l'ordre croissant en fonction du champ Year.<br><br>Note InformationsLe type de tri et l'expression de tri sont principalement requis uniquement avec les fonctions RecNo et WRank. |
| filter\_expr | Vous pouvez éventuellement ajouter une expression de filtre. Il s'agit d'une expression booléenne qui décide si l'enregistrement doit être inclus ou non dans le calcul.<br><br>Ce paramètre peut être entièrement omis, et le résultat, dans ce cas, devrait être l'absence de tout filtre.<br><br>Par exemple :<br><br>Window(avg(Salary), Department, 'ASC', Age, EmployeeID=3 Or EmployeeID=7)<br>as wAvgSalary) as wAvgSalaryIfEmpIs3or7 |
| [start\_expr,end\_expr] | Vous pouvez éventuellement définir l'argument de la fonctionnalité de fenêtre coulissante. Une fenêtre glissante nécessite deux arguments :<br><br><ul><li><p>Expression de début&nbsp;:&nbsp;nombre de lignes avant la ligne active à inclure dans la fenêtre.</p></li><li><p>Expression de fin&nbsp;:&nbsp;nombre de lignes après la ligne active à inclure dans la fenêtre.</p></li></ul><br><br>Par exemple, si vous souhaitiez inclure les trois lignes précédentes, la ligne active et la ligne suivante :<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, -3, 1)<br>as WSalaryDepartment<br><br>Pour indiquer l'ensemble des lignes précédentes ou l'ensemble des lignes suivantes, vous pouvez utiliser la fonction Unbounded(). Par exemple, pour inclure l'ensemble des lignes précédentes, la ligne active et la ligne suivante :<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, UNBOUNDED(), 1)<br>as WSlidingSalaryDepartment<br><br>Par exemple, pour inclure la troisième ligne avant la ligne active et l'ensemble des lignes suivantes :<br><br>Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year&gt;0, 3, UNBOUNDED())<br>as WSlidingSalaryDepartment |

## Exemple - Ajout d'un champ contenant une agrégation

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

#### Exemple : Ajout d'un champ contenant une agrégation

Script de chargement

Créez un nouvel onglet dans l'éditeur de chargement de données, puis chargez les données suivantes sous forme de chargement inline. Créez le tableau ci-dessous dans Qlik Sense pour afficher les résultats.

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

Résultats

Résultats de l'ajout d'un champ contenant une agrégation

| transaction\_id | transaction\_date | transaction\_amount | transaction\_quantity | customer\_id | size | 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 | Black | 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 | Black | 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 | Black | 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 | Black | 266.775 |

## Exemple - Ajout d'un champ contenant une agrégation filtrée pour des valeurs spécifiques

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

#### Exemple : Ajout d'un champ contenant une agrégation filtrée pour des valeurs spécifiques

Script de chargement

Créez un nouvel onglet dans l'éditeur de chargement de données, puis chargez les données suivantes sous forme de chargement inline. Créez le tableau ci-dessous dans Qlik Sense pour afficher les résultats.

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

Résultats

Résultats de l'ajout d'un champ contenant une agrégation filtrée pour des valeurs spécifiques

| transaction\_id | transaction\_date | transaction\_amount | transaction\_quantity | customer\_id | size | 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 | Black | - |
| 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 | 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 | 42.94 |
| 3761 | 20180926 | 3.42 | 7 | 3036491 | XS | Black | - |
| 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 | Black | - |

## Exemple - Ajout d'un champ avec une fenêtre glissante

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

#### Exemple : Ajout d'un champ avec une fenêtre glissante

Script de chargement

Créez un nouvel onglet dans l'éditeur de chargement de données, puis chargez les données suivantes sous forme de chargement inline. Créez le tableau ci-dessous dans Qlik Sense pour afficher les résultats.

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

Résultats

Résultats de l'ajout d'un champ contenant une agrégation filtrée pour des valeurs spécifiques

| transaction\_id | transaction\_date | transaction\_amount | transaction\_quantity | customer\_id | size | 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 | Black | 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 | Black | 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 | Black | 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 | Black | 325.95 |

## Limitations

Window présente les limitations suivantes :

* Window est une fonction gourmande en ressources, en particulier en termes de consommation de mémoire.

* Window n'est pas supporté dans Qlik Sense Mobile.

* Les expressions de graphique ne supportent pas Window.

* Vous ne pouvez pas imbriquer de fonctions Window dans d'autres fonctions Window.

* Window ne peut pas être utilisé à l'intérieur d'une fonction d'agrégation.

* Window doit pouvoir analyser la table toute entière.

* WRank(), RecNo() et RowNo() ne peuvent pas être utilisés avec Window lors de l'utilisation de la fonctionnalité de fenêtre coulissante.