Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !
Voir l'indexNous avons vu au dernier épisode comment créer un paramètre dynamique dans Alteryx. Dans ce troisième épisode, nous allons voir comment créer une boucle dans Alteryx.
Mais qu’est-ce qu’une boucle ? Non, ce n’est pas le Tour de France dans ce contexte !
Exemple : vous avez besoin de calculer le solde de fin de mois de votre compte bancaire, et cela pour chaque mois sur une année entière. Pour le premier mois, vous additionnez le montant d’argent que vous aviez au début du mois, plus les entrées et sorties d’argent de la période. Cela donne le calcul suivant :
Solde de fin de mois = Solde du mois précédent + Entrées d’argent + Sorties d’argent
Cela fonctionne sur le premier mois car on connait déjà le montant du solde du mois précédent. Le problème est que pour calculer le solde des mois suivants, il faut recalculer le montant en début de mois sur chaque mois. Il faudrait répéter le calcul 12 fois, ce qui serait long et fastidieux. Il faut donc faire une boucle dans Alteryx pour calculer tous les mois les uns après les autres. En programmation, il s’agit d’une boucle « While ». Dans Alteryx, c'est une macro itérative.
Quels sont les bénéfices de savoir faire une macro itérative ?
Comment faire une macro itérative ? Voici 3 étapes facile pour y arriver.
La première étape est d’activer le mode macro itérative dans la configuration du workflow :
Ensuite, il faut ajouter les données en entrée de macro. Voici les données de l’exemple :
J’ai utilisé l’outil Saisie de texte, il faut le convertir en entrée de macro par un clic droit :
Il ne reste plus qu’à ajouter les sorties de la macro itérative en utilisant l’outil Sortie de macro. Eh oui, il y a plusieurs sorties ! Pourquoi ? Il y a deux sorties à notre workflow :
Dernière étape, il faut activer une option pour qu’Alteryx sache quelle sortie utiliser pour faire la boucle. Cela ne suffit pas de nommer une sortie « Boucle », il faut l’identifier dans les propriétés du menu Concepteur d’interface. Pour cela, il faut cliquer sur le menu Afficher > Concepteur d’interface :
Une fois le menu apparu, cliquez sur le menu Propriétés représenté par un icône en forme d’engrenage :
Vous avez ici plusieurs options. Les options Entrée d’itération, Sortie d’itération et Nombre maximum d’itérations sont celles qui nous intéressent.
Il reste à identifier la sortie en entrée : il n’y en a qu’une. Il faut indiquer dans le champ Sortie d’itération la sortie qui servira à renvoyer les valeurs au début du workflow, c’est celle que nous avons nommé Boucle juste avant.
Le nombre maximum d’itérations correspond au nombre de fois où le workflow se répétera si aucune condition n’a été prévu pour qu’il s’arrête. Nous allons mettre 12 car nous cherchons à avoir les soldes des 12 prochains mois. Indiquer un nombre cohérent par rapport à l’objectif du workflow permettra d’éviter que le workflow tourne dans le vide en cas d’erreur.
Attaquons-nous maintenant au corps de notre workflow !
Si je voulais éviter le recours à une macro itérative, je ferais ce workflow :
Je devrais ensuite répéter l’opération autant de fois que nécessaire :
La méthode fonctionne mais elle est fastidieuse. Comment faire en utilisant une macro itérative ?
Voici une solution à ce problème :
Je masque la partie du workflow que je souhaite répéter. Cela nous permet de bien voir ce que nous allons ajouter pour faire le paramétrage de notre macro itérative :
Le principe est de d’envoyer uniquement les lignes à calculer dans la sortie Boucle et de conserver les lignes déjà calculées dans la sortie Résultat.
Par exemple, au début du workflow, je n’ai qu’un seul mois :
A la fin du workflow, j’en aurais 2 :
Je dois donc trouver la solution pour envoyer le mois 1 dans la sortie résultat et envoyer le mois 2 au début pour que je puisse m'en servir de base pour calculer le mois 3.
Ici, j’utilise l’outil Echantillon en gardant la première et la dernière ligne :
J’envoie le mois créé lors de la première exécution dans la sortie Boucle. Il me servira de base de calcul lorsque le workflow va se répéter :
Ainsi, le mois 2 dans la sortie Boucle deviendra l’entrée du workflow lors de la prochaine itération :
Dans le même temps, je stocke le mois déjà calculé dans la sortie Résultat :
Vous aurez peut-être noté qu’il y a un filtre avant la sortie Boucle ? Nous allons voir à quoi cela sert dans la dernière étape.
Le premier problème de cette 3ème et dernière étape est qu’une macro itérative peut s’exécuter indéfiniment s’il n’y a pas de conditions pour qu’elle s’arrête.
Comment la stopper?
Nous avons vu que la première chose à faire est de mettre un nombre raisonnable d’itérations dans les options de la macro itérative :
L’objectif ici est de calculer 12 mois, je garde le nombre 12 en nombre d’itérations.
Admettons ensuite qu’il n’y ait pas de filtre à la fin de ma macro itérative. Quand j’essaye de l’exécuter, j’ai cette erreur :
La seule condition pour que le workflow s’arrête est le nombre maximum d’itérations prévu dans l’option du menu Concepteur d’interfaces.
C’est pourquoi nous allons ajouter l’outil filtre dans notre macro : nous allons envoyer dans la sortie Boucle uniquement les mois inférieurs à 12. Ainsi, la macro ne générera plus d’erreurs lors de l’exécution.
Il est également possible d’utiliser le nombre d’itérations comme condition de sortie :
Pourquoi 10 et pas 12 ? Le nombre d’itération, identifié dans Alteryx par la variable [Engine.IterationNumber], commence à zéro : il faut donc retirer 1 pour arriver à 12 itérations. Vous pouvez voir la valeur de cette variable dans ce menu :
Dernière question : comment débugger mon workflow si je ne comprends pas ce qui se passe à chaque itération ?
Une astuce toute simple consiste à ajouter une colonne Itération dans mes données d’entrées et mettre la valeur [Engine.IterationNumber] dans cette colonne avec l’outil formule :
Ainsi, lorsque j’exécute la macro, je peux bien observer ce qu’il se passe à chaque itération et voir si les données à chaque étape correspondent bien à ce que j’attends :
Et voilà, nous avons paramétrer notre macro itérative ! Dans notre prochain épisode, nous verrons comment créer une App Analytique !
Pour ajouter un commentaire ici, vous devez être inscrit. Si vous êtes déjà inscrit, connectez-vous. Dans le cas contraire, inscrivez-vous puis connectez-vous.