Accéder au contenu principal Passer au contenu complémentaire

Window - Fonction de script

Window() effectue des calculs à partir de plusieurs 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.

  • Calcul du classement d'une valeur individuelle, soit au sein de 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 comme des fonctions d'agrégation, relationnelles et de plage.

La fonction Window doit avoir un cache au sein de l'instruction LOAD de la table que vous utilisez pour 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 prend en charge des fonctions générales telles que les opérations d'arrondissement ou 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 permet de définir le nombre de lignes utilisées lors de l'application de la fonction Window sur 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 (input_expr, [partition1, partition2, ...], [sort_type, [sort_expr]],[filter_expr], [start_expr,end_expr])

Type de données renvoyé : un 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 :

Window(Median(Salary)) as MedianSalary

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 :

Window(Salary,Department) as WSalary

 

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.

Exemple : 

LOAD Window(Max(Sales), City, 'ASC', OrderDate, Sales > 300)
+ AddMonths(OrderDate,-6) as MAX_Sales_City_Last_6_Mos, Window(Avg(Sales), City, 'ASC', OrderDate, City = 'Portland')
+ AddMonths(OrderDate,-6) as Avg_Sales_Portland_Last_6_Mos, Window(Max(Sales), City, 'ASC', OrderDate, Sales > 300)
+ AddMonths(OrderDate,-12) as MAX_Sales_City_Last_12_Mos; LOAD City, Sales, OrderDate FROM [lib://:DataFiles/Sales Data.xlsx]FROM [lib://AttachedFiles/Sales Data.xlsx] (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 :

Window(Avg(Salary), Unit, Department, Country) as AvgSalary

Dans l'exemple ci-dessus, les partitions sont Unit, Department et Country.

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 avoir l'une des deux valeurs suivantes :

  • ASC : tri croissant.

  • DESC : tri décroissant.

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.

Par exemple :

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

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.

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.

Ce paramètre peut être entièrement omis, et le résultat, dans ce cas, devrait être l'absence de tout filtre.

Par exemple :

Window(avg(Salary), Department, 'ASC', Age, EmployeeID=3 Or EmployeeID=7)
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 coulissante nécessite deux arguments :

  • Expression de début : nombre de lignes avant la ligne active à inclure dans la fenêtre.

  • Expression de fin : nombre de lignes après la ligne active à inclure dans la fenêtre.

Par exemple, si vous souhaitiez inclure les trois lignes précédentes, la ligne active et la ligne suivante :

Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, -3, 1)
as WSalaryDepartment

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 :

Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, UNBOUNDED(), 1)
as WSlidingSalaryDepartment

Par exemple, pour inclure la troisième ligne avant la ligne active et l'ensemble des lignes suivantes :

Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, 3, UNBOUNDED())
as WSlidingSalaryDepartment

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

Exemple - Ajout d'un champ contenant une agrégation filtré en fonction de valeurs spécifiques

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

Limitations

Window présente les limitations suivantes :

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

  • Les expressions de graphique ne prennent pas en charge 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.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !

Rejoignez le Programme de modernisation analytique

Remove banner from view

Modernisez votre système sans compromettre vos précieuses applications QlikView grâce au Programme de modernisation analytique. Cliquez ici pour plus d'informations ou contactez : ampquestions@qlik.com