Above, Below, RangeSum, Pick, Match, WildMatch, Rank, Dual et bien d’autres : les fonctions à connaître pour construire des expressions efficaces.
✦
Références Qlik
Ce tutoriel croise la documentation officielle Qlik avec plusieurs articles pédagogiques de Henric Cronström (HIC), notamment « Aggregations and Function Classes », « The Above Function », « Accumulations », « Count or Count distinct? » et « Average – Which average? ». Les explications et exemples SOSQLIK sont réécrits en français et simplifiés pour débuter ; ils ne constituent pas une traduction des articles originaux.
ObjectifChoisir la bonne fonction au bon momentavec des exemples directement réutilisables
🧰
À quoi ça sert ?
Qlik possède énormément de fonctions. Pour ne pas se perdre, on reprend ici une idée pédagogique de Henric Cronström (HIC) : comprendre d’abord les grandes familles de fonctions. Une fonction scalaire transforme une valeur (If, Date, Num…), une agrégation résume plusieurs lignes en une valeur (Sum, Count, Avg…), une fonction inter-record va chercher une autre ligne du graphique (Above, Below…), puis une fonction Range peut résumer la plage obtenue. Le but n’est donc pas d’apprendre un dictionnaire par cœur, mais de savoir quelle famille utiliser pour résoudre un problème.
Nous allons les regrouper par usage : comparer des lignes, construire des cumuls, choisir une valeur, tester du texte, gérer les NULL, classer, formater et manipuler des dates.
✓ Avantages
Panorama pratique des fonctions les plus utiles
Exemples combinables entre eux
△ Points de vigilance
Certaines fonctions ont un comportement dépendant du type de graphique ou du tri
1 / 27
CHAPITRE 1
Above() — regarder la ligne précédente
Essentiel
Exemple Qlik Sense
VariationSum(CA) - Above(Sum(CA))écart entre la ligne courante et la précédente
↑
À quoi ça sert ?
Above() évalue une expression sur une ligne située au-dessus de la ligne courante dans le segment de colonne. Sans offset, elle regarde la ligne précédente.
C’est une fonction incontournable pour comparer une période à la précédente, calculer une variation ou alimenter un cumul.
👶 Exemple ultra simple
Ton tableau affiche : Janvier = 100 €, Février = 120 €, Mars = 90 €.
Sur la ligne Février, Above(Sum(CA)) vaut 100 €, car Qlik regarde la ligne juste au-dessus. Donc Sum(CA)-Above(Sum(CA)) donne +20 €.
Sur Mars, Above vaut 120 €, donc la variation vaut -30 €.
MoisCAAbove(CA)
Jan100—
Fév130100 ↑
Mar90130 ↑
Above() regarde la ligne affichée juste au-dessus, pas « le mois précédent » au sens métier.
✓ Avantages
Très simple pour les évolutions
Fonctionne avec un offset et un nombre de valeurs
△ Points de vigilance
Première ligne généralement NULL
Un mauvais tri donne un résultat faux
2 / 27
CHAPITRE 2
Below() — regarder la ligne suivante
Essentiel
Exemple Qlik Sense
SuivanteBelow(Sum(CA)) - Sum(CA)écart entre la prochaine ligne et la ligne courante
↓
À quoi ça sert ?
Below() est le pendant d’Above() : il évalue l’expression sur une ligne située sous la ligne courante.
Il est utile lorsque le calcul doit se projeter vers la période ou la ligne suivante plutôt que revenir vers la précédente.
✓ Avantages
Symétrique d’Above()
Pratique pour comparer avec une valeur future dans le tableau
△ Points de vigilance
Dernière ligne généralement NULL
3 / 27
CHAPITRE 3
RangeSum() + Above() — le cumul
Essentiel
Exemple Qlik Sense
CumulRangeSum(Above(Sum(CA),0,RowNo()))cumul progressif dans l’ordre du graphique
∑
À quoi ça sert ?
RangeSum() additionne une plage de valeurs. Associée à Above(), elle permet de construire très simplement un cumul glissant ou progressif.
Above(Sum(CA),0,RowNo()) renvoie une plage allant de la ligne courante jusqu’au début du segment ; RangeSum() additionne cette plage.
👶 Lis la formule de l’intérieur vers l’extérieur
Sum(CA) calcule le CA de la ligne. Above(...,0,RowNo()) fabrique une liste : ligne actuelle + toutes les lignes précédentes. Enfin RangeSum(...) additionne cette liste.
Jan = 100, Fév = 120, Mars = 90 → cumul Mars = 100 + 120 + 90 = 310 €.
✓ Avantages
Formule classique de cumul Qlik
Permet aussi les fenêtres glissantes
△ Points de vigilance
Le cumul redémarre avec les segments de colonne si TOTAL n’est pas approprié
4 / 27
CHAPITRE 4
RangeAvg() — moyenne mobile
Intermédiaire
Exemple Qlik Sense
3 périodesRangeAvg(Above(Sum(CA),0,3))moyenne de la période courante et des deux précédentes
≈
À quoi ça sert ?
RangeAvg() calcule la moyenne d’une plage. Avec Above(), on obtient une moyenne mobile sur les dernières périodes.
Par exemple, une moyenne mobile sur trois mois utilise la valeur courante et les deux lignes précédentes.
✓ Avantages
Lisse les variations
Très utile pour tendances et séries temporelles
△ Points de vigilance
Les premières lignes disposent de moins de valeurs
5 / 27
CHAPITRE 5
RowNo() — connaître la position
Intermédiaire
Exemple Qlik Sense
Première ligneIf(RowNo()=1, 0, Sum(CA)-Above(Sum(CA)))évite le NULL de la première comparaison
#
À quoi ça sert ?
RowNo() renvoie le numéro de la ligne courante dans le segment de colonne. Avec TOTAL, la numérotation porte sur la colonne entière.
On l’utilise souvent avec Above(), RangeSum() ou dans une condition particulière à la première ligne.
✓ Avantages
Très utile dans les calculs positionnels
△ Points de vigilance
Le résultat dépend de la segmentation du tableau
6 / 27
CHAPITRE 6
Before() et After() — colonnes d’un tableau croisé
Intermédiaire
Exemple Qlik Sense
Évolution(Sum(CA)-Before(Sum(CA))) / Before(Sum(CA))variation par rapport à la colonne précédente d’un pivot
↔
À quoi ça sert ?
Before() et After() jouent horizontalement un rôle comparable à Above() et Below(), mais ils sont destinés aux tableaux croisés dynamiques.
Before() lit une colonne précédente du segment de ligne ; After() une colonne suivante. Dans les autres types de graphiques, ces fonctions renvoient NULL.
✓ Avantages
Idéal pour comparaisons horizontales dans un pivot
△ Points de vigilance
Spécifique aux tableaux croisés dynamiques
7 / 27
CHAPITRE 7
If() — la condition de base
Fondamentaux
Exemple Qlik Sense
StatutIf(Sum(CA)>100000,'Objectif atteint','À suivre')deux résultats selon une condition
?
À quoi ça sert ?
If() renvoie une valeur si la condition est vraie et une autre si elle est fausse. C’est la fonction conditionnelle la plus connue.
Elle est parfaite pour quelques conditions simples. Une cascade de nombreux If() devient toutefois difficile à lire et peut souvent être remplacée par Match(), Pick() ou une meilleure modélisation.
✓ Avantages
Lisible pour les cas simples
Très polyvalent
△ Points de vigilance
Imbrications rapidement illisibles
8 / 27
CHAPITRE 8
Match(), MixMatch() et WildMatch()
Essentiel
Exemple Qlik Sense
RechercheWildMatch(Produit,'PC*','Tablet*','Phone*')1, 2, 3 selon le motif trouvé ; 0 sinon
🔎
À quoi ça sert ?
Match() cherche une correspondance exacte et renvoie sa position dans la liste. MixMatch() fait une comparaison insensible à la casse. WildMatch() ajoute les jokers * et ?.
Le résultat est un numéro : 0 si rien ne correspond, 1 pour le premier élément, 2 pour le deuxième, etc. Cela permet aussi de les utiliser directement comme condition.
✓ Avantages
Compact et lisible
Excellent pour recherche et classification
△ Points de vigilance
Match() est sensible à la casse
9 / 27
CHAPITRE 9
Pick() — choisir dans une liste
Essentiel
Exemple Qlik Sense
Pick + MatchPick(Match(Region,'Nord','Sud','Est'),'N','S','E')transforme la position trouvée en valeur choisie
☝
À quoi ça sert ?
Pick() renvoie le nième élément d’une liste. Son intérêt devient évident lorsqu’on lui fournit le résultat numérique d’un Match().
Le couple Pick(Match(...),...) remplace élégamment de nombreux If() imbriqués et permet de faire correspondre une valeur à un libellé, une expression ou une couleur.
👶 Pense à deux machines
Match(Region,'Nord','Sud','Est') cherche la région. Si Region = 'Sud', il répond 2.
Pick(2,'N','S','E') prend alors le 2e élément et répond 'S'.
Donc : Match trouve le numéro, Pick utilise ce numéro.
✓ Avantages
Alternative élégante aux If imbriqués
Peut renvoyer des expressions, pas seulement du texte
△ Points de vigilance
Si l’index est hors de la liste, le résultat n’est pas exploitable comme prévu
10 / 27
CHAPITRE 10
Pick(Match()) — le duo à connaître
Pratique
Exemple Qlik Sense
LibelléPick(Match(Code,'A','B','C'),'Actif','Bloqué','Clôturé')équivalent compact d’une cascade de If()
★
À quoi ça sert ?
En combinant Match() et Pick(), on obtient une structure de correspondance très lisible : Match() détermine le numéro et Pick() renvoie la valeur associée.
C’est une technique particulièrement utile pour des libellés, des tris métier ou le choix d’une expression selon une catégorie.
✓ Avantages
Très lisible pour de petites listes
Facile à maintenir
△ Points de vigilance
Peu adapté à des dizaines ou centaines de correspondances
11 / 27
CHAPITRE 11
Alt() et Coalesce() — valeurs de secours
Pratique
Exemple Qlik Sense
NULLCoalesce(TelephoneMobile, TelephoneFixe, 'Non renseigné')première valeur non NULL
⛑
À quoi ça sert ?
Alt() renvoie le premier paramètre ayant une représentation numérique valide, puis la valeur de secours finale. Coalesce() renvoie le premier paramètre qui n’est pas NULL.
Ils semblent proches mais ne répondent pas exactement au même besoin : Alt() est orienté interprétation numérique, Coalesce() vers la présence d’une valeur non NULL.
✓ Avantages
Expressions plus courtes
Gestion propre des valeurs de secours
△ Points de vigilance
Ne pas confondre « non NULL » et « numérique valide »
12 / 27
CHAPITRE 12
Class() — créer des tranches
Pratique
Exemple Qlik Sense
TranchesClass(Montant,1000,'€')0≤x<1000, 1000≤x<2000, etc.
▥
À quoi ça sert ?
Class() affecte une valeur numérique à un intervalle. C’est parfait pour créer rapidement des tranches d’âge, de montant, de délai ou de volume.
Le résultat est une valeur duale dont le texte représente l’intervalle et dont la partie numérique facilite le tri.
✓ Avantages
Création immédiate d’histogrammes
Tri naturel grâce à la valeur duale
△ Points de vigilance
Intervalles réguliers uniquement
13 / 27
CHAPITRE 13
Dual() — un texte et un nombre
Intermédiaire
Exemple Qlik Sense
PrioritéDual('Élevée',3)affiche « Élevée » mais conserve la valeur numérique 3
2
À quoi ça sert ?
Dual() associe une représentation texte à une valeur numérique. Qlik affiche le texte mais peut trier ou calculer avec la valeur numérique.
C’est très utile pour imposer un ordre métier à des libellés comme Faible, Moyen, Élevé ou pour fabriquer des libellés de période correctement triés.
✓ Avantages
Résout élégamment les problèmes de tri de libellés
△ Points de vigilance
Peut surprendre si on oublie qu’une valeur possède deux représentations
14 / 27
CHAPITRE 14
Only() — une seule valeur ou NULL
Pratique
Exemple Qlik Sense
SélectionOnly(Annee)affiche 2026 si une seule année est possible, sinon NULL
1
À quoi ça sert ?
Only() renvoie une valeur lorsqu’il n’existe qu’une seule valeur possible dans le contexte d’agrégation. S’il en existe plusieurs, le résultat est NULL.
C’est très utile pour afficher une information seulement lorsque la sélection est non ambiguë.
✓ Avantages
Simple pour contrôler l’unicité
△ Points de vigilance
Un NULL peut être normal et non une erreur
15 / 27
CHAPITRE 15
Min(), Max() et FirstSortedValue()
Intermédiaire
Exemple Qlik Sense
Top produitFirstSortedValue(Produit,-Aggr(Sum(CA),Produit))renvoie le produit classé sur le CA décroissant
🏆
À quoi ça sert ?
Min() et Max() trouvent les extrema numériques. FirstSortedValue() permet de récupérer une valeur associée à un ordre de tri, par exemple le produit correspondant au plus gros chiffre d’affaires.
C’est une distinction importante : Max(Sum(CA)) cherche une valeur maximale dans un contexte adapté ; FirstSortedValue() sert à récupérer le libellé associé au classement.
✓ Avantages
Très puissant pour récupérer le « gagnant »
△ Points de vigilance
Les ex æquo doivent être anticipés
16 / 27
CHAPITRE 16
Rank() — classer les résultats
Intermédiaire
Exemple Qlik Sense
ClassementRank(Sum(CA))rang du CA dans le contexte du graphique
🥇
À quoi ça sert ?
Rank() renvoie le rang d’une expression parmi les lignes d’un segment de colonne. Il permet de créer des classements dynamiques qui réagissent aux sélections.
On l’utilise souvent sur une mesure agrégée, par exemple Rank(Sum(CA)), avec différentes options de représentation selon le besoin.
✓ Avantages
Top/Flop dynamique
Réagit aux sélections
△ Points de vigilance
Les égalités et le contexte doivent être maîtrisés
Concat() agrège plusieurs valeurs textuelles dans une seule chaîne avec un séparateur. Avec DISTINCT, on peut éliminer les doublons.
Très pratique pour afficher une liste de valeurs sélectionnées, de produits ou de catégories dans un KPI ou une infobulle.
✓ Avantages
Excellent pour résumés et infobulles
△ Points de vigilance
Peut produire des chaînes énormes
18 / 27
CHAPITRE 18
Num(), Date() et Timestamp() — maîtriser l’affichage
Essentiel
Exemple Qlik Sense
DateDate(DateCommande,'DD/MM/YYYY')formate la représentation de la date
📅
À quoi ça sert ?
Num(), Date() et Timestamp() servent principalement à formater la représentation d’une valeur numérique ou temporelle sans changer la logique métier sous-jacente.
Qlik stocke les dates comme des nombres avec une représentation formatée. Comprendre cette dualité évite énormément d’erreurs de comparaison et d’affichage.
✓ Avantages
Affichage cohérent
Indispensable avec dates et montants
△ Points de vigilance
Le mauvais usage de # peut transformer un problème de format en problème de données
19 / 27
CHAPITRE 19
MonthStart(), AddMonths() et InMonth()
Pratique
Exemple Qlik Sense
Mois précédentMonthStart(AddMonths(Today(),-1))premier jour du mois précédent
🗓
À quoi ça sert ?
Les fonctions de date Qlik permettent d’éviter beaucoup de calculs manuels. MonthStart() ramène au début du mois, AddMonths() décale une date et InMonth() teste l’appartenance à un mois relatif.
Elles sont particulièrement utiles pour les périodes glissantes, comparaisons N/N-1 et bornes de Set Analysis.
✓ Avantages
Expressions temporelles fiables
Très utile avec Set Analysis
△ Points de vigilance
Attention aux formats et timestamps lors des comparaisons
20 / 27
CHAPITRE 20
GetSelectedCount() et GetFieldSelections()
Pratique
Exemple Qlik Sense
TitreIf(GetSelectedCount(Annee)=1,'Année : '&GetFieldSelections(Annee),'Plusieurs années')titre dynamique selon la sélection
☑
À quoi ça sert ?
Ces fonctions permettent d’interroger les sélections de l’utilisateur. GetSelectedCount() compte les valeurs sélectionnées d’un champ ; GetFieldSelections() en fournit une représentation textuelle.
Elles servent à adapter un titre, afficher un avertissement ou conditionner un objet selon l’état de sélection.
✓ Avantages
Très utile pour titres et messages dynamiques
△ Points de vigilance
GetFieldSelections() peut abréger l’affichage lorsque de nombreuses valeurs sont sélectionnées
21 / 27
CHAPITRE 21
Sum(), Count(), Avg()… — les agrégations
Fondamentaux
Exemple Qlik Sense
PrincipePlusieurs lignes → une valeurc’est le rôle d’une agrégation
Σ
À quoi ça sert ?
HIC classe Sum(), Count(), Avg(), Min(), Max(), Only() et Concat() parmi les fonctions d’agrégation : elles prennent plusieurs enregistrements et les réduisent à une seule valeur.
Dans un graphique, la dimension décide sur quelles lignes cette réduction est faite.
✓ Avantages
Base de presque toutes les mesures Qlik
Faciles à combiner avec Set Analysis
△ Points de vigilance
Le résultat n’a de sens que si la granularité est comprise
22 / 27
CHAPITRE 22
Count() ou Count(DISTINCT) ? — le piège classique
Essentiel
Exemple Qlik Sense
Nombre de commandesCount(DISTINCT CommandeID)et non Count(CommandeID) si une commande possède plusieurs lignes
🔢
À quoi ça sert ?
Count(Champ) compte les occurrences non NULL. Count(DISTINCT Champ) compte les valeurs différentes. HIC montre que confondre les deux est une source très fréquente d’erreurs.
👶 Exemple commandes
La commande 1001 contient 3 articles et la commande 1002 contient 2 articles. La table de faits contient donc 5 lignes.
Count(Commande) → 5 car le numéro apparaît sur 5 lignes.
Count(DISTINCT Commande) → 2 car il n’y a que deux commandes différentes.
✓ Avantages
DISTINCT répond souvent au vrai besoin métier
Évite de compter des lignes à la place des objets métier
△ Points de vigilance
DISTINCT a un coût ; ne l’ajoutez pas mécaniquement quand le grain garantit déjà l’unicité
23 / 27
CHAPITRE 23
Avg() — quelle moyenne veux-tu vraiment ?
Essentiel
Exemple Qlik Sense
Moyenne par moisAvg(Aggr(Sum(Montant), Mois))deux niveaux : total mensuel, puis moyenne des mois
÷
À quoi ça sert ?
Un des meilleurs rappels de HIC : Avg(Montant) calcule la moyenne des lignes transactionnelles. Ce n’est pas forcément la moyenne métier que tu imagines.
👶 Exemple
Janvier totalise 100 €, février 300 €. Tu veux la vente mensuelle moyenne : (100 + 300) / 2 = 200 €.
Si les mois contiennent plusieurs lignes de commande, Avg(Montant) calcule la moyenne des lignes, pas celle des mois.
Le vrai raisonnement est : 1) somme par mois ; 2) moyenne de ces sommes.
✓ Avantages
Évite des KPI mathématiquement corrects mais métier faux
△ Points de vigilance
Aggr() n’est pas toujours la solution la plus performante ; une modélisation ou un calcul plus direct peut être préférable
24 / 27
CHAPITRE 24
Calculer dans le script ou dans le graphique ?
Bonnes pratiques
Exemple Qlik Sense
RègleStatique → script · Dynamique → graphiquemoins de calculs inutiles au clic
⚙
À quoi ça sert ?
HIC propose une règle simple : si le résultat est statique, calcule-le plutôt au chargement ; s’il doit changer avec les sélections, calcule-le dans le graphique.
👶 Deux cas
Year(Date) : le 12/09/2026 restera toujours en 2026 → calcul statique, bon candidat pour le script/calendrier.
Rank(Sum(CA)) : le classement d’un client change quand l’utilisateur sélectionne un produit ou une région → calcul dynamique, donc graphique.
✓ Avantages
Applications plus rapides
Logique plus facile à comprendre
△ Points de vigilance
Pré-calculer une logique qui doit réagir aux sélections la rendrait incorrecte
25 / 27
CHAPITRE 25
Above() et les mois manquants — attention !
Avancé mais indispensable
Exemple Qlik Sense
À vérifierCalendrier complet + valeurs zéro si nécessaireles périodes absentes doivent exister dans le graphique si le calcul en dépend
⚠
À quoi ça sert ?
HIC souligne un piège majeur des cumuls et moyennes mobiles : Above() suit les lignes réellement présentes dans le graphique, pas un calendrier imaginaire.
👶 Exemple qui piège tout le monde
Le graphique contient Janvier, Février, pas Mars, puis Avril.
Pour Avril, Above(Sum(CA)) regarde la ligne précédente affichée : Février. Il ne peut pas deviner que Mars manque.
Une moyenne « 3 mois » peut donc couvrir Janvier + Février + Avril au lieu de Février + Mars + Avril.
✓ Avantages
Évite des cumuls silencieusement faux
△ Points de vigilance
Demande de penser au calendrier et à l’état de sélection
26 / 27
CHAPITRE 26
Quelle fonction choisir ?
À retenir
Exemple Qlik Sense
Réflexe SOSQLIKBesoin → fonction → contexte → tri → testcomprendre avant de complexifier
✓
À quoi ça sert ?
Le bon réflexe est de partir du besoin : ligne précédente → Above(); cumul → RangeSum(Above()); choix par index → Pick(); correspondance → Match/WildMatch(); valeur de secours → Coalesce/Alt; tranche → Class(); ordre métier → Dual().
Puis vérifiez trois choses : la fonction dépend-elle du tri ? du type de graphique ? du contexte de sélection ? Ces trois questions expliquent une grande partie des résultats surprenants dans Qlik.
✓ Avantages
Choix plus rapide de la bonne fonction
Expressions plus simples et maintenables
△ Points de vigilance
Toujours vérifier la documentation pour les options avancées