# Window Fonction de script

Window() effectue des calculs à partir de plusieurs lignes d'une section (ou « fenêtre ») d'un tableau complet et produit une seule valeur pour chaque ligne.

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

* Comparer une valeur numérique individuelle d'une ligne à la moyenne, au maximum ou au minimum d'une fenêtre du tableau.

* Calculer le classement d'une valeur individuelle, soit dans la fenêtre, soit dans le tableau tout entier.

[Window - Script syntax and chart function](https://play.vidyard.com/KddMeUa2GDAvFQ3vFFroPy)

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 être incluse dans l'instruction LOAD de la table que vous utilisez ou faire référence à la table, par exemple à l'aide d'une instruction Resident LOAD. Pour un exemple, consultez [Exemple - Ajout d'un champ contenant une agrégation](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/WindowFunctions/Window.htm#Example2).

Le nom peut être omis, mais dans ce cas, le nom de champ est défini comme la totalité de l'expression de la fonction Window. Par exemple, AvgDepSalary dans l'exemple ci-dessous :

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

Note Informations

Il est recommandé de donner un nom de champ à la fonction Window.

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 SumDepSalary
```

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

Note Informations

La fonction Window analyse l'ensemble de la table. En termes de consommation de mémoire, le coût de cette analyse est proportionnel au nombre de champs de la table. Une table comportant quelques champs, en plus de ceux sur lesquels porte la fonction Window, est toujours préférable à une table comportant de nombreux champs.

En règle générale, une fonction Window consomme 2 à 4 fois plus de mémoire et prend 2 à 4 fois plus de temps à charger qu'une opération de script similaire contenant la même agrégation, une clause Where (filtre), une clause Group by (partition) et une clause Order by (tri).

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

Type de données renvoyées : une valeur par ligne, qui peut être combinée avec ou utilisée dans une autre expression ou ajoutée directement à la table obtenue par l'instruction LOAD.

Arguments

| Argument | Description |
| --- | --- |
| main\_expr | Expression d'entrée principale calculée et renvoyée par la fonction. Il doit s'agir de toute expression basée sur une agrégation, par exemple Median(Salary). Par exemple :<br><br>Window(Median(Salary)) as MedianSalary<br><br>L'expression peut également être un nom de champ sans 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) as WSalary<br><br>Les expressions comprenant des agrégations imbriquées ou des fonctions de fenêtre imbriquées telles que Window(Sum(Avg(Salary))) ou Window(Sum(Window(Salary))) ne sont pas autorisées. |
| partition1, partition2 | Après main\_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. Par exemple :<br><br>Window(Avg(Salary), Department) as AvgDepSalary<br><br>Cela permet de calculer le salaire moyen de chaque service.<br><br>Lorsque plusieurs paramètres de partition sont fournis, l'agrégation est appliquée à chaque ligne avec une combinaison unique de champs de partition. Par exemple :<br><br>Window(Avg(Salary), Department, Country) as AvgDepSalaryPerCountry<br><br>Cela permet de calculer le salaire moyen de chaque service dans chaque pays. Les services dupliqués dans différents pays tels que Marketing dans Sweden et Marketing dans Canada seront traités comme des partitions différentes.<br><br>Le partitionnement est similaire au regroupement obtenu par la clause group by. En revanche, le partitionnement ne réduit pas le nombre d'enregistrements par rapport à la table d'entrée. |
| sort\_type, [sort\_expr] | Vous pouvez éventuellement spécifier le type de tri et l'expression de tri. Ceci définit l'ordre dans lequel l'agrégation est effectuée. sort\_type est une chaîne constante et peut prendre l'une des trois valeurs suivantes :<br><br><ul> <li> <p> <span>ASC</span>&nbsp;: tri croissant.</p> </li> <li> <p> <span>DESC</span>&nbsp;: tri décroissant.</p> </li> <li> <p>NONE</p> </li> </ul><br><br>Si vous définissez sort\_type sur ASC ou sur DESC, vous devez définir une expression de tri. Avec sort\_type défini sur NONE, aucune expression de tri ne devrait être fournie. L'expression de tri décide de l'ordre des lignes au sein d'une partition.<br><br>Par exemple :<br><br>Window(RecNo(), Department, 'ASC', Year)<br><br>Dans l'exemple ci-dessus, l'agrégation dans la partition est effectuée dans l'ordre croissant en fonction du champ Year.<br><br>Les paramètres de tri affectent également l'ordre dans lequel une fenêtre glissante traite un tableau. Pour un exemple, consultez [Exemple - Ajout d'un champ avec une fenêtre glissante triée](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/WindowFunctions/Window.htm#Example3). |
| 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>Si filter\_expr est fourni, un type de tri doit être inclus. Si aucun type de tri n'est défini, l'argument peut être interprété comme un paramètre de partition et non comme une expression de filtre. Le paramètre filter\_expr peut être entièrement omis ou une valeur vraie peut être incluse. Dans les deux cas, aucun filtre n'est utilisé de sorte qu'aucune ligne n'est exclue.<br><br>Par exemple :<br><br>Window(avg(Salary), Department, 'ASC', Age, Country='US' Or Country='Canada') as AvgDepSalaryInUsOrCanada<br><br>L'instruction Window ci-dessus écartera toutes les lignes pour lesquelles le champ Country n'est pas US ou Canada, excluant ainsi ces lignes de l'agrégation. Il restera des valeurs de sortie pour les lignes qui ont été écartées, mais, comme toutes les autres lignes de sortie, elles ne contiendront que les résultats agrégés des lignes qui n'ont pas été exclues par le filtre. |
| start\_expr,end\_expr | Vous pouvez éventuellement définir les arguments de la fonctionnalité de fenêtre glissante. Cela limite davantage le nombre de lignes à agréger. Chaque ligne de sortie ne comprendra que les résultats (agrégés) d'un certain nombre de lignes précédant et suivant la ligne active. Une fenêtre glissante nécessite deux arguments (start\_expr,end\_expr). Si ces arguments sont fournis, le type de tri ne devrait pas être ignoré. Sinon, les arguments peuvent être interprétés comme un paramètre de partition au lieu d'une fenêtre glissante. Le paramètre start\_expr,end\_expr comprend :<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, 'NONE', 1, -3, 1) as WSlidingSalaryDepartment<br><br>Pour indiquer toutes les lignes précédentes ou toutes les lignes suivantes, vous pouvez utiliser la fonction Unbounded(). Par exemple, pour inclure toutes les lignes précédentes, la ligne active et la ligne suivante :<br><br>Window(concat(Text(Salary),'-'), Department, 'NONE', 1, UNBOUNDED(), 1) as WSlidingSalaryDepartment<br><br>Par exemple, pour inclure la troisième ligne à partir de la ligne active et toutes les lignes suivantes :<br><br>Window(concat(Text(Salary),'-'), Department, 'NONE', 1, 3, UNBOUNDED()) as WSlidingSalaryDepartment<br><br>Dans les exemples ci-dessus, le type de tri NONE est fourni de sorte que le script puisse faire la distinction entre les arguments de partition et les paramètres qui viennent après le type de tri. |

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/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.

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

Résultats

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

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

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/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.

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

Résultats

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

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

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/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.

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

Résultats

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

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

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/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.

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

Résultats

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

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

Pour mieux comprendre comment les partitions et l'ordre de tri affectent les agrégations dans une fenêtre glissante, triez le tableau dans l'ordre croissant par nom.

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

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

Dans la ligne correspondant à Johan, l'agrégation a inclus les valeurs de salaire de David et de Sara. Il s'agit des lignes précédente et suivante de la partition du service Sales en cas de tri en fonction de l'âge.

Pour un autre exemple montrant les lignes incluses, remplacez l'expression Windows Window(concat(Text(Salary),'-'), Department, 'ASC', Age, -1, 1) par Window(concat(Text(Name),'-'), Department, 'ASC', Age, -1, 1) et actualisez. Les valeurs de SortedSlidingWindow du tableau ci-dessous donnent le nom des lignes précédente et suivante de la partition Sales.

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

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

## Limitations

Window présente les limites 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 à l'intérieur d'autres fonctions Window.

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

* Window ne peut pas être utilisé dans une instruction LOAD avec une clause group by.

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

* WRank(), RecNo() et RowNo() ne peuvent pas être utilisés avec Window lors du recours à la fonctionnalité de fenêtre glissante.

* Lorsque la fonctionnalité de fenêtre glissante est utilisée, le temps de calcul augmente en fonction de la taille de la fenêtre. Il est généralement conseillé d'éviter les grands tableaux combinés avec des fenêtres de grande taille.