TUTORIEL · QLIK SENSE
Réutiliser du script avec SUB et CALL
Factoriser un traitement répétitif dans une sous-routine Qlik claire et réutilisable.
Pourquoi créer une sous-routine ?
Lorsqu’un même traitement revient plusieurs fois dans un script, une sous-routine permet de le définir une seule fois puis de l’appeler au besoin.
La sous-routine doit être définie avant l’appel qui l’utilise.
Exemple
SUB Journaliser(pMessage)
TRACE === $(pMessage) ===;
END SUB
CALL Journaliser('Début du chargement');| SUB | définit |
|---|---|
| CALL | exécute |
Passer des paramètres
Les paramètres permettent d’utiliser la même logique avec des valeurs différentes.
Un nom explicite pour les paramètres rend l’appel beaucoup plus facile à relire.
Exemple
SUB AfficherNbLignes(pTable)
LET vNbLignes = NoOfRows('$(pTable)');
TRACE $(pTable) : $(vNbLignes) lignes;
END SUB
CALL AfficherNbLignes('Commandes');
CALL AfficherNbLignes('Clients');| Paramètre | pTable |
|---|---|
| Appels | Commandes puis Clients |
Un cas concret : stocker puis supprimer
Une sous-routine peut regrouper plusieurs instructions qui doivent toujours être exécutées ensemble.
Le regroupement est pertinent lorsque les deux opérations constituent réellement une règle commune.
Exemple
SUB StoreDrop(pTable, pDossier)
STORE [$(pTable)]
INTO [$(pDossier)/$(pTable).qvd] (qvd);
DROP TABLE [$(pTable)];
END SUB
CALL StoreDrop('Commandes', 'lib://QVD');| Entrée | nom de table + dossier |
|---|---|
| Actions | STORE puis DROP |
Garder des sous-routines simples
Une sous-routine est surtout utile lorsqu’elle donne un nom clair à un traitement répétitif.
Une sous-routine n’améliore le script que si elle le rend plus lisible et plus maintenable.
Exemple
| Bon repère | Une responsabilité claire par SUB | le nom doit permettre de comprendre son rôle |
|---|
| Bon usage | traitement répétitif identifiable |
|---|---|
| À éviter | logique cachée et effets de bord |