Free Trial

Forum

Trouvez des réponses, posez des questions, et partagez votre expertise d’Alteryx.
TIPS de la semaine

Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !

Voir l'index
RÉSOLU

Macro itérative : gérer le nombre max d'itération de manière dynamique

PatPli
Astéroïde

Bonjour,

 

J'ai créé une macro itérative dans laquelle j'appelle une commande .bat. 

Aujourd'hui le nombre max d'itération est fixe (lié à une zone de texte). Ce nombre max me sert dans un filtre et à activer/désactiver un container qui contient un .bat (si je ne fais pas ça, je reçois un message d'erreur lorsque je dépasse le nombre d'itération car dans le true du filtre du vide est envoyé au .bat et un .bat vide génère une erreur).

Voici ma macro itérative :  

PatPli_0-1684914679939.png

 

Dans le workflow qui appelle cette macro, je souhaiterai envoyé le nombre max d'itération (calculé dans le container grisé ci-dessous)  à ma macro itérative 

PatPli_1-1684914857909.png

 

Or j'ai fait plusieurs essais mais rien ne fonctionne : 

- Mettre un paramètre de contrôle => transforme ma macro en macro batch

- Passer par un input control dans la macro itérative et lier la loupe de cet input control à la loupe du filtre et de la condition d'interface => je reçois le message "Une entrée de macro ne peut pas être utilisée comme entrée de question pour cette configuration"

- Passer par une liste en remplissant la liste avec les données de mon input control => je ne vois pas comment sélectionner la première valeur

 

Comment pourrais-je faire cela ? 

 

Merci.

9 RÉPONSES 9
BenoitC
Alteryx
Alteryx

Bonjour @PatPli 

 

Une solution est peut-être de faire une méthode "poupée russe": il faut mettre le container dans une macro batch indépendante de la macro itérative et insérer cette nouvelle macro dans la macro itérative. A titre d'exemple, l'outil Nettoyage de données fonctionne sur ce mode avec plusieurs macros dans une même macro.

 

BenoitC_0-1684917315257.png

Qu'en pensez vous?

 

Benoit

 

 

Benoit Conley

Sales Engineer
Alteryx, Inc.

PatPli
Astéroïde

Bonjour Benoit,

 

Merci pour votre retour et votre suggestion. Toutefois, je pense qu'il y a une subtilité que je ne comprends pas. En effet, je viens d'essayer mais je ne vois pas la différence entre avoir un input control ou le résultat d'une macro batch dans ma macro itérative : 

PatPli_0-1684918542946.png

Ci-dessus, comment puis-je faire ensuite pour remplacer ma zone de texte avec la sortie de ma macro batch calculant le nombre max d'itérations ? 

 

Merci.

 

PatPli
Astéroïde

En complément, mon problème est surtout lié au fait que le filtre même à False n'empêche pas de passer par la commande .bat et donc renvoie une erreur lorsque le jeu de données est vide.

En effet, au niveau du filtre, je n'ai pas vraiment besoin de la zone de texte pour saisir le nombre d'itérations, une entrée de macro avec le nombre d'itération convient parfaitement. J'en ai surtout besoin pour activer / désactiver le container  : 

PatPli_0-1684920151984.png

 

Si je trouve un autre moyen pour que quand le filtre est à False, la partie true ne s'exécute pas avec un jeu de données vide, mon problème sera résolu. 

BenoitC
Alteryx
Alteryx

La solution est de transformer le conteneur avec le script .bat en macro batch. Ainsi vous pourrez tester la condition NB ITERATION MAX > ITERATION NUMBER et modifier l'activation du conteneur.

 

BenoitC_0-1684922608154.png

 

La nouvelle macro ressemblera à ça:

BenoitC_1-1684922649424.png

 

 

Je vous ai mis un workflow en PJ comme exemple.

 

Benoit

 

Benoit Conley

Sales Engineer
Alteryx, Inc.

PatPli
Astéroïde

Merci @BenoitC. Je comprends maintenant (Workflow => macro itérative => macro batch avec le .bat et là je peux utiliser un control parameter) et en effet ça devrait fonctionner !

 

StephaneP
Alteryx Alumni (Retired)

Salut à tous,

J'arrive après la bataille MAIS cela me permet de profiter de la sortie de la dernière version 23.1 pour exploiter la nouvelle fonctionalité d'activation conditionnelle de container.
Ainsi une portion d'un workflow peut être désactivée en fonction du déroulement du début du workflow. Et donc si tu n'as plus d'exécution à lancer tu peux désactiver le container qui lance le batch et donc éviter de lever une erreur. Cela nécessite un peu de redesign du workflow mais du coup simplifie le flux globale.

StephaneP_1-1685002522218.png

Explication de cette fonctionalité ici: Control Container 

Hop

Stéphane Portier
Sales Engineer
Alteryx
StephV
Alteryx Alumni (Retired)

Bonjour @PatPli

Merci pour votre question. Si la réponse de @StephaneP ou @BenoitC vous a aidé, pourriez-vous l'accepter comme solution. Cela aidera d’autres utilisateurs.

Merci beaucoup !

Steph Vitale-Havreng
PatPli
Astéroïde

Bonjour @StephV,

 

Avant-hier, j'ai déjà accepté comme solution la réponse de BenoitC. Dois-je faire une autre action ?

 

Merci.

StephV
Alteryx Alumni (Retired)

Merci à toi @PatPli d'avoir accepté la solution de @BenoitC !

 

Si tu as d'autres questions, la communauté est là pour t'aider ! 

Bonne journée,

Steph Vitale-Havreng
Étiquettes