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.

SUB délimite le traitement réutilisable. CALL déclenche son exécution.

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');
SUBdéfinit
CALLexécute

Passer des paramètres

Les paramètres permettent d’utiliser la même logique avec des valeurs différentes.

Dans cet exemple, la sous-routine reçoit un nom de table et affiche son nombre de lignes.

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ètrepTable
AppelsCommandes puis Clients

Un cas concret : stocker puis supprimer

Une sous-routine peut regrouper plusieurs instructions qui doivent toujours être exécutées ensemble.

Le traitement reçoit le nom d’une table et le chemin de sortie, écrit le QVD puis retire la table de l’application.

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éenom de table + dossier
ActionsSTORE puis DROP

Garder des sous-routines simples

Une sous-routine est surtout utile lorsqu’elle donne un nom clair à un traitement répétitif.

Si elle contient trop de conditions, modifie de nombreuses variables globales ou appelle plusieurs autres sous-routines, le diagnostic devient plus difficile.

Une sous-routine n’améliore le script que si elle le rend plus lisible et plus maintenable.

Exemple

Bon repèreUne responsabilité claire par SUBle nom doit permettre de comprendre son rôle
Bon usagetraitement répétitif identifiable
À éviterlogique cachée et effets de bord