Associations, clés, grain, clés synthétiques, boucles, JOIN, KEEP et Link Tables : construire un modèle Qlik fiable et lisible.
✦
Références Qlik
Ce tutoriel s’appuie sur la documentation officielle Qlik. Les explications et exemples SOSQLIK sont organisés autour d’un objectif : comprendre la logique du modèle avant de chercher à le complexifier.
VENTESClientID · Date · Montant↕ ClientIDCLIENTSClientID · Client · Région
◎
À quoi ça sert ?
Qlik ne demande pas de tout aplatir dans une seule table. Son moteur associe les tables grâce aux champs qu’elles ont en commun et propage les sélections dans l’ensemble du modèle.
👶 L’idée simple
Deux tables possèdent un champ nommé ClientID : Qlik comprend qu’elles sont liées par ce champ. Le nom des champs fait donc partie de la logique du modèle.
VENTESClientIDDateMontant
ClientIDassociation
CLIENTSClientIDClientRégion
✓ Avantages
Évite de nombreux JOIN
Modèle flexible
Sélections associatives naturelles
△ Points de vigilance
Des noms de champs mal maîtrisés créent de mauvaises associations
1 / 16
CHAPITRE 1
Comment Qlik associe les tables
Essentiel
Exemple Qlik Sense
VENTES:
LOAD
ClientID,
Montant
FROM ...;
CLIENTS:
LOAD
ClientID,
Client,
Region
FROM ...;
↔
À quoi ça sert ?
Dans le modèle interne, les champs portant exactement le même nom servent d’association entre les tables.
Il n’est donc pas nécessaire d’écrire une clause JOIN pour relier une table de faits à une dimension si le champ clé commun est correctement nommé.
✓ Avantages
Script plus simple
Tables conservées séparément
△ Points de vigilance
Un champ homonyme non souhaité peut créer une association accidentelle
2 / 16
CHAPITRE 2
La bonne clé
Essentiel
Exemple Qlik Sense
CLIENTS1 ligne = 1 clientClientIDVENTES1 ligne = 1 ligne de vente
🔑
À quoi ça sert ?
Une clé doit représenter correctement le grain de la relation. Une clé ClientID relie naturellement des ventes à un client ; une clé CommandeID relie une commande à ses lignes.
La question importante n’est pas seulement « les valeurs correspondent-elles ? », mais « que représente exactement une ligne de chaque table ? ».
✓ Avantages
Associations prévisibles
Mesures plus fiables
△ Points de vigilance
Une clé au mauvais grain peut multiplier ou perdre des informations
3 / 16
CHAPITRE 3
Les champs homonymes involontaires
Débutant
Exemple Qlik Sense
CLIENTS:
LOAD
ClientID,
Statut as StatutClient
FROM ...;
COMMANDES:
LOAD
CommandeID,
ClientID,
Statut as StatutCommande
FROM ...;
⚠
À quoi ça sert ?
Deux champs portant le même nom sont associés, même si fonctionnellement ils n’ont rien à voir. Il faut donc contrôler les noms chargés.
Par exemple, un champ Statut dans Commandes et un champ Statut dans Clients peuvent créer une association absurde si les deux notions sont différentes.
✓ Avantages
Modèle plus lisible
Évite des associations invisibles au premier regard
Qlik crée une clé synthétique lorsque deux tables ou plus ont au moins deux champs en commun. Elle représente les combinaisons des champs communs.
👶 Important
Une clé synthétique n’est pas automatiquement une catastrophe, mais elle doit toujours être comprise. Plusieurs clés synthétiques, ou des clés synthétiques basées sur d’autres clés synthétiques, sont un signal d’alerte.
VENTESClientIDAnnéeMontant
$Syn 1ClientID + Annéeclé synthétique créée par Qlik
BUDGETClientIDAnnéeBudget
✓ Avantages
Qlik peut représenter automatiquement une clé composite
△ Points de vigilance
Peut révéler une erreur de conception
Les structures synthétiques complexes peuvent coûter cher
5 / 16
CHAPITRE 5
Créer une clé composite
Intermédiaire
Exemple Qlik Sense
AutoNumber(
ClientID & '|' & Annee
) as %ClientAnnee
⊕
À quoi ça sert ?
Quand la relation dépend réellement de plusieurs champs, on peut créer explicitement une clé composite et éviter de laisser plusieurs champs d’association.
Une clé explicite rend souvent le modèle plus lisible et permet de renommer ou supprimer les champs techniques communs qui ne doivent plus associer les tables.
✓ Avantages
Association maîtrisée
Modèle plus lisible
△ Points de vigilance
Il faut construire exactement la même clé des deux côtés
6 / 16
CHAPITRE 6
Références circulaires
Avancé
Exemple Qlik Sense
A→ B → CetA→ CDeux chemins = boucle
⟳
À quoi ça sert ?
Une référence circulaire apparaît lorsqu’il existe plusieurs chemins d’association entre deux champs. Cela crée une ambiguïté logique.
Qlik signale la boucle et peut rendre une table loosely coupled. La bonne réponse est généralement de corriger le modèle ou de renommer un champ pour supprimer le chemin indésirable.
A
B
C
A → BB → CA → C
⚠ Deux chemins entre A et C
✓ Avantages
Le viewer permet de repérer visuellement le problème
△ Points de vigilance
Peut produire une interprétation ambiguë des données
7 / 16
CHAPITRE 7
Association ou JOIN ?
Essentiel
Exemple Qlik Sense
AssociationVENTES ↔ CLIENTStables séparéesJOINVENTES + CLIENTSune seule table
⋈
À quoi ça sert ?
Un JOIN fusionne physiquement les données de deux tables dans une table interne. Une association conserve les tables séparées et les relie par leurs champs communs.
Qlik recommande généralement de profiter des associations plutôt que de multiplier les JOIN : les JOIN peuvent agrandir les tables, ralentir le modèle et faire perdre certaines fréquences d’origine.
✓ Avantages
Association : mémoire et flexibilité souvent meilleures
△ Points de vigilance
JOIN : risque de duplication de lignes et perte de fréquence
8 / 16
CHAPITRE 8
KEEP : filtrer sans fusionner
Avancé
Exemple Qlik Sense
CLIENTS:
LOAD ClientID, Client FROM ...;
VENTES:
LEFT KEEP (CLIENTS)
LOAD ClientID, Montant FROM ...;
∩
À quoi ça sert ?
KEEP réduit une ou deux tables à leur intersection de données comme le ferait un join équivalent, mais conserve les tables séparées dans le modèle.
C’est une alternative intéressante quand on veut limiter les données chargées sans créer une grosse table jointe.
✓ Avantages
Préserve deux tables
Peut éviter certains JOIN volumineux
△ Points de vigilance
Moins connu, donc à documenter dans le script
9 / 16
CHAPITRE 9
Association ou CONCATENATE ?
Intermédiaire
Exemple Qlik Sense
VENTES:
LOAD * FROM [Ventes_2025.qvd] (qvd);
CONCATENATE (VENTES)
LOAD * FROM [Ventes_2026.qvd] (qvd);
⇣
À quoi ça sert ?
CONCATENATE empile les lignes de tables similaires. Ce n’est pas une association entre deux entités différentes : c’est la création d’une table unique contenant plusieurs lots de lignes.
Qlik peut concaténer automatiquement des tables qui ont exactement le même ensemble de champs. NoConcatenate permet d’empêcher cette fusion automatique lorsqu’on veut conserver deux tables.
✓ Avantages
Parfait pour historiser plusieurs fichiers homogènes
△ Points de vigilance
Une concaténation involontaire peut faire disparaître une table attendue du modèle
10 / 16
CHAPITRE 10
Le modèle en étoile
Bonnes pratiques
✦
À quoi ça sert ?
Un modèle en étoile simple — une table de faits centrale entourée de dimensions — est souvent très lisible et efficace dans Qlik.
Ce n’est pas une obligation absolue, mais c’est un excellent point de départ : Ventes au centre, puis Clients, Produits, Calendrier, Agences…
Dimensions : qui, quoi, quand, où ? Faits : événements et mesures numériques à analyser.
✓ Avantages
Compréhension rapide
Moins de chemins ambigus
△ Points de vigilance
Certains besoins complexes nécessitent d’autres structures
11 / 16
CHAPITRE 11
Quand une Link Table devient utile
Expert
Exemple Qlik Sense
VENTES↘LINK↙BUDGETdimensions communes via la table de liaison
🔗
À quoi ça sert ?
Lorsque plusieurs tables de faits doivent partager plusieurs dimensions sans créer de clés synthétiques ou de boucles, une Link Table peut centraliser les clés d’association.
C’est une technique avancée : elle doit répondre à un vrai problème de modèle multi-faits. Il ne faut pas ajouter une Link Table par habitude.
VENTES%LinkKeyMontant · Quantité
LINK%LinkKeyClientIDProduitIDDateID
BUDGET%LinkKeyBudget
CLIENTSPRODUITSCALENDRIER
✓ Avantages
Peut résoudre des modèles multi-faits complexes
△ Points de vigilance
Ajoute une couche de complexité
Peut augmenter le volume de clés
12 / 16
CHAPITRE 12
Le grain avant tout
Essentiel
Exemple Qlik Sense
QuestionUne ligne représente quoi ?→ à poser pour chaque table
▦
À quoi ça sert ?
Avant de charger ou d’associer une table, formule une phrase : « une ligne représente… ». Cette phrase révèle le grain.
👶 Exemple
VENTES : une ligne = une ligne de commande. COMMANDES : une ligne = une commande. CLIENTS : une ligne = un client. Mélanger ces grains sans réfléchir est une source classique de doubles comptes.
Après chaque évolution importante du script, ouvre le Data Model Viewer. Vérifie les tables, les champs clés, les cardinalités apparentes, les clés synthétiques et les éventuelles boucles.
Le viewer n’est pas seulement un dessin : c’est ton contrôle qualité du modèle chargé.
✓ Avantages
Diagnostic visuel rapide
Excellent outil pédagogique
△ Points de vigilance
Il faut compléter le visuel par des contrôles de données
14 / 16
CHAPITRE 14
Pourquoi mon total est faux ?
Diagnostic
Exemple Qlik Sense
SymptômeSum(Montant) trop élevé→ vérifier le modèle avant l’expression
🔎
À quoi ça sert ?
Quand une somme double ou qu’un filtre produit un résultat étrange, inspecte d’abord le modèle : mauvais grain, JOIN multiplicatif, clé incomplète ou association involontaire.
Ne corrige pas immédiatement la mesure avec DISTINCT ou une expression compliquée. Le problème peut être structurel.
✓ Avantages
Corrige la cause plutôt que le symptôme
△ Points de vigilance
Le diagnostic peut nécessiter de revenir aux données sources
15 / 16
CHAPITRE 15
Ma méthode recommandée
À retenir
Exemple Qlik Sense
Règle SOSQLIKGrain → Clés → Associations → Contrôlepuis seulement optimisation
✓
À quoi ça sert ?
Commence par le grain, garde des clés explicites, contrôle les noms de champs, privilégie les associations naturelles et inspecte le Data Model Viewer après chaque changement structurel.
N’utilise JOIN, Link Table ou clés composites que lorsqu’elles répondent à un besoin identifié. La sophistication n’est pas un objectif : la lisibilité du modèle l’est.
✓ Avantages
Modèle fiable et maintenable
Calculs plus simples
Diagnostic plus rapide
△ Points de vigilance
Demande de résister au réflexe du JOIN systématique