Re : Automatisation de niveau supérieur à l'aide de scripts JSLAjouter @Jordan_Hiller et @ChristianBille à ce commentaire.
Merci à tous d'avoir mis cela ensemble. J'ai une question de suivi sur la "généralisation", et cela a plus à voir avec mon manque de capacité de script. Normalement, dans mon flux de travail, je dois "sélectionner toutes les colonnes", puis faire quelque chose, qu'il s'agisse de résumer, de regrouper, d'explorer les valeurs manquantes, etc. Cependant, j'ai des milliers de colonnes et elles auront des noms différents dans chaque nouvelle table de données. , donc je ne peux pas simplement remplacer 5 000 colonnes lorsqu'il m'indique qu'il ne peut pas trouver une colonne particulière (cela prendrait des heures). Je me demande si je peux d'abord regrouper les colonnes, puis effectuer les étapes de flux de travail restantes sur le groupe. Je pourrais donner au groupe un nom générique.
L'alternative serait d'essayer de sélectionner les colonnes par une propriété dans leur nom, comme dans le script ci-dessous. S'il existe un moyen de le scripter à l'endroit où la prochaine étape du flux de travail comporte les colonnes SÉLECTIONNÉES générées par ce script ? Par exemple, si je voulais transposer toutes les colonnes avec "le" dans le nom, ce script pourrait-il être intégré dans un workflow ? J'essaie de réfléchir à la façon d'éviter d'avoir à recoder les noms de colonne dans chaque fichier, bien que ce soit encore une autre option !
Je me rends compte que Workflow Builder fonctionne probablement mieux lorsque vous avez des dizaines de tables au format identique à analyser, mais j'essaie de comprendre si je pourrais le faire coopérer lorsque chaque table diffère légèrement.
names default to here(1);
dt=current data table();
colNames = dt << get column names(string);
for each({Name}, colNames,
if(contains(Name,"nox"),
for each row(
column(name)[row()] = ???????????; // your formula here
)
);
);
Re : Automatisation de niveau supérieur à l'aide de scripts JSLSi j'ai bien compris ta question, @abmayfield , vous demandez si un workflow JMP17 peut prendre en charge un grand nombre de noms de colonnes changeants. Je dirai oui, c'est possible, mais pas sans insérer du JSL personnalisé dans le flux de travail.
Une bonne approche consiste à faire en sorte que votre flux de travail/script agisse sur les colonnes que l'utilisateur a sélectionnées avant exécuter le flux de travail.
Voici un exemple utilisant l'exemple de jeu de données Blood Pressure.
Names Default To Here( 1 );
//Custom JSL: Get the user-selected columns, save them into list CNames
CNames = Current Data Table() << Get Selected Columns;
//Slightly modified workflow step: replace hard-coded columns with list CNames
Data Table( "Blood Pressure" ) << Transpose(
columns( CNames ),
By( :Dose ),
Label( :Subject ),
Output Table( "tdata" )
);
Quelle que soit la façon dont vous attaquez cela, la solution impliquera probablement JSL listes . En apprendre un peu plus sur les listes peut vous donner de nouveaux super pouvoirs de codage !
Automatisation de niveau supérieur à l'aide de scripts JSLLa vidéo a été mise à jour en août 2024.
Les workflows sont un moyen sans code d'automatiser les analyses et les rapports que vous utilisez souvent ou quotidiennement. De plus, vous pouvez convertir les workflows en scripts JSL pour offrir une expérience utilisateur fluide et une présentation plus soignée et créer un module complémentaire à partager avec d'autres. Cette démonstration montre les bases de la compréhension et de la modification des scripts de workflow et de leur flexibilité pour les nouvelles données et les nouveaux utilisateurs. Elle suppose que vous avez une certaine expérience dans la création d'un workflow JMP.
L'étude de cas utilise trois sources que nous utilisons pour créer le flux de travail à l'aide des données des années 2015 à 2017, puis pour créer un script qui peut fonctionner avec les données des années suivantes.
Le fichier .zip ci-joint comprend tous les fichiers dont vous avez besoin pour vous entraîner, y compris deux versions des données Excel sur la garde d'enfants et le module complémentaire JMP d'analyse de la garde d'enfants.
Découvrez comment faire :
- Comprendre certains des composants de base de JSL
- Commentaires
- Référence aux colonnes dans les tables de données
- Expressions et objets auxquels elles se réfèrent
- Variables de chemin
- Créer un flux de travail
- Sauvegarder le script de workflow
- Modifiez le script pour le généraliser aux nouvelles données et aux nouveaux utilisateurs
- Modifier les noms des tables et les chemins d'accès aux fichiers
- Créer des variables de nom de table de données
- Ajoutez des mécanismes de saisie utilisateur selon les besoins (choisir un fichier, boîte de dialogue de colonne, etc.)
- Choisissez un fichier
- Créer un JSL pour sélectionner un fichier en fonction de critères spécifiques
- Par défaut, utiliser la table de données ouverte actuelle
- Choisissez une colonne, puis déchargez la colonne sélectionnée de la boîte de dialogue pour agir dessus plus tard dans le script.
- Utilisez le sélecteur de colonnes de rapport intégré plutôt que de choisir une colonne
- Vous pouvez éventuellement enregistrer le script en tant que module complémentaire JMP pour la distribution.
- Créez le complément en utilisant Fichier > Nouveau > Complément
- Créez un élément de menu et/ou un élément de barre d'outils pour lancer le script
- Inclure des fichiers de données, des PDF, etc.
- Installez le module complémentaire et partagez-le avec d'autres utilisateurs qui peuvent l'installer en double-cliquant sur le fichier *.jmpaddin
Questions répondues par Jordan Hiller @Jordan_Hiller lors du webinaire en direct :
Q : Si mon flux de travail génère une NOUVELLE table au cours du processus et que cette nouvelle table est ensuite appelée par des étapes successives, je rencontre des problèmes car la table nouvellement formée recevra un nom difficile à prévoir, comme « sans titre 5 ». Cette étape peut-elle être « généralisée » de la même manière ?
R : Vous rencontrerez ce problème en particulier lorsque vous utiliserez des éléments du menu Tables comme stack, split, transpose et les éléments que vous créez avec stack, split, transpose. À moins que vous ne leur donniez un nom explicite, ils s'appelleront u=Untitled 17 ou Untitled 32. Nommez donc le nouveau tableau de sortie pendant les opérations du menu Tables.

Renamed split tableTable fractionnée renommée
Q : Si un script JSL a été exécuté sans Workflow Builder, comment peut-il être transformé en Workflow ?
R : Oui, vous pouvez créer une nouvelle action personnalisée de workflow, puis copier et coller le script dans une fenêtre, ou diviser le script en actions personnalisées distinctes.
Q : Pourriez-vous cliquer sur Enregistrer dans Workflow Builder, puis exécuter votre script ? WFB pourrait-il capturer les étapes du script ?
R : Dans JMP 17 et les versions antérieures, les étapes ne sont pas capturées. Cependant, les workflows JMP 18 capturent effectivement les scripts exécutés pendant l'enregistrement du workflow.
Q : Avez-vous des suggestions à faire lors de l'exécution d'un modèle d'ajustement avec la variable « by » ? Le workflow enregistre une instance contenant la répartition de chaque catégorie ? Mais comment le rendre plus général lorsque la colonne a une nouvelle catégorie ?
R : Le scripting par groupe en JSL est un peu délicat. Il faut savoir gérer les listes JSL. Je vous suggère de consulter la communauté des utilisateurs JMP ou de soumettre une question à la communauté des utilisateurs, et vous y trouverez de bons conseils.
Q : Existe-t-il une variable de chemin qui fait référence au répertoire dans lequel se trouve le script en cours d’exécution ?
R : Non, il n'existe pas de variable de chemin pour le script. Vous pouvez contourner ce problème. Souvent, lorsque vous spécifiez un fichier dans un script JMP, si le fichier se trouve dans le même chemin/répertoire/dossier dans le même script que celui que vous exécutez, vous pouvez supprimer le chemin/répertoire du nom de fichier et utiliser un chemin relatif. Voir ci-dessous.
Ressources

Automatisation et scriptsRe : Automatisation de niveau supérieur à l'aide de scripts JSLPourriez-vous cliquer sur Enregistrer dans Workflow Builder, puis exécuter votre script ? WFB capturerait-il les étapes du script ?
Jmp18 : oui
Re : Automatisation de niveau supérieur à l'aide de scripts JSLMerci @hogi ! J'ai modifié la réponse à la question ci-dessus. Comme Hogi l'a indiqué, les workflows JMP 18 capturent effectivement les scripts exécutés pendant l'enregistrement du workflow.