Tout commence par un clic
Avant de parler de moteur, de cardinalité ou de modèle de données, faisons simplement ce que fait n’importe quel utilisateur de Qlik : sélectionnons une valeur.
Notre application analyse quelques ventes. Au départ, aucune sélection n’est active : toutes les valeurs sont possibles.
Avant la sélection
Cliquons sur Nord. La valeur devient verte. Mais le plus intéressant est ce qui arrive partout ailleurs.
Sélection : Région = Nord
Notre mini-modèle
Gardons le même petit jeu de données pendant tout l’article. Les ventes sont reliées aux clients et aux produits par des champs communs.
ID_CLIENT
ID_PRODUIT
Les tables restent distinctes : ID_CLIENT associe CLIENTS à VENTES et ID_PRODUIT associe VENTES à PRODUITS.
Dans Qlik, les champs portant exactement le même nom dans plusieurs tables constituent les associations : le moteur ne devine pas leur relation métier. Le schéma ci-dessus représente des associations, pas des cardinalités 1→N déclarées comme contraintes de relation. Ici, ID_CLIENT et ID_PRODUIT permettent aux sélections de traverser le modèle.
Le jeu de données de référence
À partir d’ici, tous les exemples de l’article découlent exactement des mêmes données. Cela nous permettra de vérifier chaque valeur blanche, verte ou grise sans changer les règles en cours de route.
Vue à plat : le tableau ci-dessous sert uniquement à vérifier facilement les exemples. Dans le modèle Qlik présenté juste au-dessus, CLIENTS, VENTES et PRODUITS restent bien trois tables distinctes.
| Région | Client | Produit | Montant |
|---|---|---|---|
| Nord | Alice | PC | 1 200 € |
| Nord | Alice | Souris | 40 € |
| Nord | Benoît | PC | 950 € |
| Sud | Chloé | Écran | 320 € |
| Ouest | David | Casque | 180 € |
Les états de sélection : les couleurs parlent
Les couleurs ne sont pas un simple habillage. Elles représentent l’état logique des valeurs par rapport aux sélections. Vert, blanc, gris clair et gris foncé sont les couleurs Qlik caractéristiques ; un thème personnalisé peut toutefois les modifier. C’est donc l’état logique qui compte, pas la teinte exacte.
Sélectionné
La valeur a été choisie.
Possible
Compatible avec le contexte courant.
Alternatif
Dans un champ déjà sélectionné, valeur qui aurait été possible sans la sélection faite dans ce champ.
Exclu
Incompatible avec le contexte courant.
Sélectionné exclu
Sélectionné, mais rendu impossible par une autre sélection.
Le vert et le blanc sont intuitifs. La vraie richesse apparaît souvent dans les gris : ils rendent visibles des relations qui ne font plus partie du résultat courant.
Une sélection se propage dans tout le modèle
Avec Région = Nord, Qlik détermine les clients associés au Nord, puis les ventes reliées à ces clients, puis les produits présents dans ces ventes.
Une liste de valeurs, un tableau ou un graphique n’est donc pas isolé : tous travaillent avec le même contexte de sélection.
Le gris est une information
Dans beaucoup d’outils, filtrer signifie surtout faire disparaître ce qui ne correspond pas au filtre. Qlik conserve au contraire ces valeurs visibles et indique qu’elles sont exclues.
Pourquoi « Casque » est-il gris foncé — donc exclu ?
Parce qu’aucune vente de notre exemple ne relie actuellement Casque à la région Nord. Cette absence de relation devient visible.
Quels clients n’ont rien acheté dans cette région ? Quels produits ne sont pas associés à ce segment ? Quelles valeurs deviennent impossibles lorsqu’on ajoute une contrainte ? L’exclusion peut être aussi instructive que le résultat lui-même.
Gris clair et gris foncé : le piège classique
Le gris clair — l’état alternatif — apparaît dans un champ qui contient déjà une sélection.
Dans Région
✓ NordSudOuestIci, Région est la seule sélection. Sud et Ouest sont donc alternatifs : sans la sélection Nord effectuée dans ce même champ, ils seraient possibles.
Dans Produit
PCSourisÉcranCasqueÉcran et Casque sont exclus : avec Région = Nord, ils ne sont pas reliés au contexte courant.
Plusieurs sélections : ET entre les champs, OU dans un même champ
Jusqu’ici, nous n’avons sélectionné qu’une seule valeur. Dans une vraie application, on combine très vite plusieurs choix. Une règle simple permet de comprendre ce qui se passe.
Nord OU Sud
Si plusieurs valeurs sont sélectionnées dans Région, Qlik retient les données associées à Nord ou à Sud.
Nord ET PC
Si l’on sélectionne Nord dans Région puis PC dans Produit, les données doivent satisfaire les deux contraintes.
Deux sélections dans deux champs
Le deuxième clic resserre donc le contexte. Avec Nord ET PC, Alice et Benoît restent possibles ; Chloé, David et Emma sont exclus côté Client, tandis qu’Écran et Casque sont exclus côté Produit. Souris devient alternative dans Produit, puisque ce champ contient désormais la sélection PC. Les états sont recalculés après chaque sélection.
« Sélectionné exclu » : le cinquième état en situation
C’est l’état le moins intuitif. Il faut distinguer deux choses : l’entrée — la valeur a-t-elle été sélectionnée ? — et la sortie logique — cette valeur reste-t-elle possible compte tenu des autres sélections ?
Nous sélectionnons d’abord Chloé.
✓ ChloéDans Région, Nord est alors exclu. Nous sélectionnons néanmoins cette valeur exclue.
NordNord est sélectionné. Chloé, sélectionnée auparavant, est maintenant incompatible avec Nord.
✓ ChloéChloé devient donc sélectionnée exclue : la coche rappelle qu’elle a été sélectionnée, tandis que le gris foncé indique que la nouvelle sélection l’a rendue impossible. Si l’on supprime la sélection qui l’exclut, elle peut redevenir sélectionnée.
Et si une valeur n’a aucune correspondance ?
Emma existe dans CLIENTS, mais aucune des cinq lignes de VENTES ne lui correspond. Elle appartient donc bien au modèle sans avoir de vente associée.
mais aucune ligne VENTES ne lui correspond.
Dans une liste de sélection Client, Emma peut donc rester visible comme valeur du champ. Dès qu’un contexte exige une association avec des ventes, son absence de correspondance peut se traduire par un état exclu. Cela ne signifie pas pour autant qu’Emma apparaîtra dans toutes les visualisations : leur contenu dépend des dimensions, mesures et données qu’elles utilisent.
Ce cas rend le « gris comme information » très concret et montre pourquoi il faut éviter de traduire mentalement tout le modèle Qlik en une gigantesque jointure SQL.
Sous le capot : pourquoi parle-t-on d’associatif ?
Le mot « associatif » ne signifie pas que Qlik abandonne les tables. Le modèle chargé en mémoire est constitué de tables et de champs. Sa particularité est la manière dont les valeurs communes permettent au moteur de déterminer, à chaque sélection, quelles valeurs sont possibles ou exclues dans l’ensemble du modèle.
Pour quelqu’un venant du SQL ou d’un autre outil BI, c’est un changement de perspective : le modèle ne sert pas seulement à produire le résultat d’une requête prédéfinie. Il devient un espace que l’utilisateur explore par associations successives.
Pourquoi cette exploration peut-elle être si rapide ?
Qlik travaille en mémoire avec des structures optimisées autour des valeurs de champs et de leurs associations. Lorsqu’une sélection change, le moteur peut ainsi déterminer rapidement quelles valeurs restent reliées au contexte courant, sans reconstruire une jointure SQL à chaque clic. Nous restons volontairement à ce niveau : l’architecture interne du moteur mérite un sujet à part entière.
Association Qlik ≠ jointure SQL
La comparaison avec une jointure SQL est tentante, mais elle devient vite trompeuse. Une jointure fabrique un résultat selon une condition et un type de jointure précis. Dans Qlik, les tables peuvent rester séparées et être reliées par leurs champs communs.
JOIN
On définit comment deux ensembles sont combinés pour produire un résultat.
Association
Les tables restent dans le modèle et les sélections se propagent via les valeurs associées.
Prenons Emma, notre cliente sans vente. Avec un INNER JOIN entre CLIENTS et VENTES, sa ligne disparaîtrait du résultat. Avec un LEFT JOIN, elle resterait présente, mais nous aurions déjà choisi une façon précise de combiner les deux tables. Dans le modèle Qlik, CLIENTS et VENTES peuvent rester distinctes : Emma existe toujours dans CLIENTS. Dans une liste de sélection Client, son absence de correspondance avec VENTES peut alors devenir visible selon le contexte ; cela ne signifie pas qu’Emma apparaîtra automatiquement dans toutes les visualisations.
Contrairement à une jointure SQL, la relation entre deux tables Qlik n’est pas contrainte par un type de jointure prédéfini : ce sont les associations entre champs communs qui propagent les sélections. Ce n’est donc pas « un FULL OUTER JOIN partout ». Cette image peut dépanner quelques secondes, mais elle ne décrit pas correctement le fonctionnement du modèle.
Et les calculs et les graphiques dans tout ça ?
Le contexte associatif ne sert pas uniquement à colorer des listes. Il détermine aussi l’ensemble de données sur lequel les expressions des objets sont évaluées. Quand vous sélectionnez Nord, un indicateur comme Sum(Montant) est recalculé sur les ventes possibles dans ce contexte.
C’est également ici qu’intervient le Set Analysis : il permet à une expression de travailler sur un ensemble défini différemment du contexte de sélection courant — par exemple pour comparer la région sélectionnée au total général.
Associatif ne veut pas dire magique
La puissance du moteur ne dispense pas de construire un modèle cohérent. Si deux champs portent le même nom, Qlik peut les associer. Un mauvais nom de champ peut donc créer une association non souhaitée.
Le grain
Savoir ce que représente une ligne dans chaque table reste fondamental.
La cardinalité
La cardinalité existe dans les données (1→N, N→N…), mais Qlik ne la déclare pas comme une contrainte de relation entre tables.
Les clés synthétiques
Plusieurs champs communs peuvent amener Qlik à créer une clé synthétique : un signal à comprendre.
Les boucles
Plusieurs chemins d’association peuvent créer des ambiguïtés et imposer de repenser le modèle.