Dans Qlik (Qlik Sense on Prem, Qlik Sense Saas, QlikView), les Set Analysis, ou expressions d’ensembles, permettent de définir le périmètre sur lequel va porter un indicateur, en fonction (ou non) des sélections effectuées par l’utilisateur.

Jusqu’à présent les filtres se trouvaient à l’intérieur des fonctions d’agrégations. L’exemple suivant donne par exemple le nombre de consultants sur 2022 :

Sum( {<year={2022}>} nb_consultants)

Le problème de cette syntaxe est que le périmètre d’ensemble était obligatoirement stocké dans les éléments principaux. Pour obtenir le nombre de consultants sur l’année précédente ou d’une agence donnée, nous étions obligés de créer un nouvel élément principal dédié. Enfin, lors de l’utilisation de plusieurs agrégations, le même filtre devait être répété dans chaque formule.

À partir de la version Qlik August 2022, les expressions d’ensemble peuvent s’écrire d’une nouvelle manière : à l’extérieur de la fonction d’agrégation. Nous pouvons donc désormais écrire :

{<year={2022}>} Sum(nb_consultants)/ Sum(nb_agences)

Il est donc également possible d’appeler, et filtrer, un élément principal de cette manière :

{<year={2022}>} [Elément principal]

Portée et héritage

L’écriture d’une expression à l’extérieur de la fonction d’agrégation va affecter l’ensemble de l’expression, sauf si elle est encapsulée dans des parenthèses. On peut ainsi influer uniquement sur certaines agrégations (La fonction avg() n’est ici pas concernée par le filtre sur l’année 2022) :

({<year={2022}>} Sum(CA)/ count(distinct client_id)) – avg(VentesClient)

Les fonctions d’agrégation qui n’ont pas d’expression d’ensemble peuvent donc désormais hériter du contexte extérieur (et/ou des sélections actives comme cela était uniquement le cas auparavant).

Expression d'ensemble interne

Lorsqu’une fonction d'agrégation contient déjà une expression d'ensemble, celle-ci sera fusionnée avec le contexte. Les mêmes règles de fusion qu'aujourd'hui s'appliqueront :

  • Une expression d'ensemble interne avec un identifiant d'ensemble n'héritera PAS du contexte. Il héritera de la sélection de l'identifiant d'ensemble à la place.

{<agence={"nantes"}>} Sum ( {$<year={2022}>} nb_consultants)

NB : Cet indicateur renverra le nombre de consultants en 2022 pour toutes les agences, le filtre extérieur n’est pas pris en compte car l’identifiant d’ensemble ($) est présent.

  • Une expression d'ensemble interne qui n'a pas d'identifiant d'ensemble - elle n'a qu'un modificateur d'ensemble - héritera du contexte.

{<agence={"nantes"}>} Sum ( {<year={2022}>} nb_consultants)

NB : Cet indicateur renverra le nombre de consultants en 2022 pour l’agence de Nantes uniquement car car il n’y a pas d’identifiant d’ensemble dans la fonction d’agrégation.

Agrégation


L'expression d'ensemble de l'agrégation externe ne sera jamais héritée dans l'agrégation interne. Mais une expression d'ensemble en dehors de l'agrégation externe sera héritée dans les deux.

Exemples :

Sum ({< Ensemble1 >} Aggr ( Count ({< Ensemble2 >} Field )))

>> L’Ensemble1 ne sera pas hérité dans l’Ensemble2

{< EnsembleExterne >} Sum ({< Ensemble1 >} Aggr ( Count ({< Ensemble2 >} Field )))

>> L'EnsembleExterne sera hérité à la fois dans l’Ensemble1 et l’Ensemble2.

Cette nouvelle fonctionnalité est disponible dans toutes les éditions (On premise, Saas, desktop) de Qlik Sense à partir de la version August 2022 et sera implémentée dans la prochaine version de QlikView prévue à l’automne 2023.

Nos consultants Next Decision sont experts certifiés Qlik et vous accompagnent dans votre projet Qlik. Nous pouvons également vous former ! Contactez-nous !