TUTORIEL · QLIK SENSE

Les fonctions utiles de Qlik

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.

BIENVENUE

La boîte à outils des expressions Qlik

Fondamentaux
Exemple Qlik Sense
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
À 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
À 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
17 / 27

CHAPITRE 17

Concat() — regrouper du texte

Pratique
Exemple Qlik Sense
ListeConcat(DISTINCT Region, ', ')PACA, Occitanie, Bretagne…
À quoi ça sert ?

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.

👶 Imagine 3 lignes de ventes

10 €, 20 €, 30 €.

Sum(Montant)60 €
Avg(Montant)20 €
Min(Montant)10 €
Max(Montant)30 €.

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
27 / 27