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

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 :

  • Comparer une valeur numérique individuelle d'une ligne à la moyenne, au maximum ou au minimum 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);

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 glissante 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 (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 toute 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 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] (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 elles sont nécessaires pour le fenêtrage approprié 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 :

  • 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 de l'ordre des lignes au sein d'une partition.

Par exemple :

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

L'exemple ci-dessus montre les résultats dans la partition d'un tri croissant en fonction du champ Year.

Note InformationsLe type de tri et l'expression de tri sont essentiellement nécessaires 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, est l'absence de 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 glissante. Une fenêtre glissante 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 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 :

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

Par exemple, pour inclure la troisième ligne à partir de la ligne active et toutes les 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ée pour des valeurs spécifiques

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

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 prennent pas en charge 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 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.

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 !