Je vous propose aujourd'hui de découvrir un opérateur d’ensemble (mentionné nulle part dans la documentation de Qlik Sense.) Un complot peut-être ? :-)

Trêve de bavardage, commençons par une petite piqûre de rappel des identificateurs d’ensemble (Smooth Set Operator).

Ces éléments représentent l'intégralité des données, ou seulement une partie de celles-ci. Ils sont définis grâce aux sélections. Pour plus d’information, n’hésitez pas à consulter cet article => Infographie Qlik Sense Set Analysis

Un peu de pratique, sortez votre Qlik !

"OK Maxime, mais pour le moment, rien de secret..." d'aucuns diront. Et c’est vrai.

Passons donc à un petit exercice, avec ce famélique jeu de données :

Année Marque Ventes

2024 BMW 30
2024 Porsche 10
2024 Porsche 20

PS: Je ne suis pas sponsorisé par ces marques (malheureusement)

Créons donc quelques expressions :

Je souhaite le total des ventes :

Sum(Ventes) = 60

Je souhaite le total des ventes de BMW :

Sum({<Marque={’BMW’}>} Ventes) = 30

Je souhaite le total des ventes de Porsche pour 2024:

{<Année={2024}>} Sum({<Marque={’Porsche’}>} Ventes) = 30

Je souhaite le total des ventes de Porsche pour 2023:

{<Année={2023}>} Sum({<Marque={’Porsche’}>} Ventes) = 30 au lieu de 0

Pourtant, si je passe le Set Analysis externe en interne comme ceci :

Je souhaite le total des ventes de Porsche pour 2023 :

Sum({<Année={2023},Marque={’Porsche’}>} Ventes) = 0

Quel comportement propose Qlik Sense ?

Comme vous pouvez le voir dans notre article dédié "Nouvelle fonctionnalité Qlik Sense Set Analysis", il existe un système de portée et d’héritage des Set Analysis du moteur Qlik.

En lisant bien ce dernier et la documentation de l’éditeur, notre

Sum({<Marque={’Porsche’}>} Ventes)

devrait hériter de {<Année={2023}>}, et donc retourner 0.

Exposons point par point la situation :

  • Les données sont forcées à Porsche dans le Set Analysis interne
  • Les données sont forcées à 2023 dans le Set Analysis externe
  • Pour Porsche en 2023 il n’y a pas de données.

Plot twist que les plus avertis d’entre vous auront remarqué. Le champ Année ne contient pas 2023 !

Reprenons donc notre analyse :

  • Les données sont forcées à Porsche dans le Set Analysis interne
  • Les données sont forcées à 2023 dans le Set Analysis externe
  • 2023 n’existant pas, le Set Analysis est ignoré
  • Le résultat de la somme est donc l’addition des Ventes pour Porsche toutes années présentes confondues.

En revanche lorsque sont combinés les deux Set Analysis à l’intérieur de l’agrégation cela donne ceci :

  • Les données sont forcées à l’intersection de 2023 et Porsche
  • Cet ensemble est vide
  • Le résultat de la somme est donc 0, puisqu’il n’y a pas de ventes pour cette intersection

Pourquoi c’est dommage ?

De prime abord, ce comportement du moteur Qlik ne semble pas très impactant. C’est vrai, après tout, on a bien résolu ton problème en mettant le modificateur d’expression dans la somme.

Force est de constater qu’en effet, c’est une alternative qui paraît satisfaisante (et qui rend cet article superflu).

Maintenant, rappelez-vous, il est possible d’utiliser des références à des éléments principaux (Master Item) dans les expressions, très pratique pour la maintenance et la maîtrise des données dans Qlik Sense !

Ainsi, en reprenant l’exemple de la précédente section, je souhaite utiliser un Master Item “CA Porsche” défini par :

Sum({<Marque={’Porsche’}>} Ventes)

et afficher la valeur de 2024 et de 2023 dans un KPI.

Malheureusement, je ne peux pas utiliser les expressions :

{<Année={2024}>} [CA Porsche] et {<Année={2023}>} [CA Porsche].

Si j’écris deux expressions

Sum({<Année={2023},Marque={’Porsche’}>} Ventes)

et

Sum({<Année={2024},Marque={’Porsche’}>} Ventes)

cela fonctionne mais je perds en maintenance et en maîtrise de données...

Admettons que Porsche devienne au fil du temps Porsche Aktiengesellschaft, au lieu de modifier l’expression de mon Master Item, je vais devoir modifier les deux décrites ci-dessus.

Imaginez cela sur 10, 25, 50 ou 100 indicateurs, et des Set Analysis complexes, avec des comparaisons, des fonctions, des p() et des e(), etc. Dommage, non ?

L’opérateur secret (enfin) de Qlik Sense

En exclusivité pour vous, l’heure de la révélation a sonné ! Accrochez vous bien…, le voici :

Qlik Sense et l’opérateur secret des Set Analysis

Ta daaaaaam ! (Quoi ? Tout ça pour ça ?)

Alors, comment ça marche ? Reprenons le même jeu de données que plus haut :

Je souhaite le total des ventes de Porsche pour 2023:

{&<Année={2023}>} Sum({<Marque={’Porsche’}>} Ventes) = 0

Analysons le comportement de notre nouvelle expression :

  • Les données sont forcées à Porsche dans le Set Analysis interne
  • Les données sont forcées à 2023 dans le Set Analysis externe
  • 2023 n’existe pas, MAIS l’opérateur & force à l’intersection des valeurs, un ensemble videLe résultat de la somme est donc 0, puisqu’il n’y a pas de ventes pour cette intersection

Appliqué a mon élément principal, j’obtiens donc les deux expressions :

{&<Année={2023}>} [CA Porsche] et {&<Année={2024}>} [CA Porsche].

Je conserve ainsi une maintenabilité accrue et une maîtrise des données optimale. Pas besoin de modifier une centaine d'expressions si ma formule de CA passe de :

Sum({<Marque

{’Porsche’}>} Ventes)

à

Sum({<Marque={’Porsche Aktiengesellschaft’}>} Ventes) !

Alors, pas mal non ?

Sur ces bonnes paroles, à très vite, je retourne travailler sur Qlik pour m’offrir une Porsche, ou une Porsche Aktiengesellschaft, je ne sais plus trop...

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