Comment créer un script pour appliquer les valeurs limites de spécifications apparaissant dans une colonne à sa propre propriété en fonction des étiquettes des autres colonnes ?J'ai des données entrantes similaires au tableau de données ci-joint.
Je voudrais (à titre d'exemple)
- enregistrez les valeurs de ligne apparaissant (en premier/en haut) dans la colonne Breakdown_5 par rapport aux lignes USL/LSL (sous Label) pour T5 (sous TestStage) comme limites dans la propriété de colonne Breakdown_5, de la même manière
- enregistrez les valeurs de ligne apparaissant (en premier/en haut) dans la colonne Resistance_7 par rapport aux lignes USL/LSL (sous Label) pour S7 (sous TestStage) comme limites dans la propriété de colonne Resistance_7
- enregistrez les valeurs de ligne apparaissant (en premier/en haut) dans la colonne Current_7 par rapport aux lignes USL/LSL (sous Label) pour S7 (sous TestStage) comme limites dans la propriété de colonne Current_7
- enregistrez les valeurs de ligne apparaissant (en premier/en haut) dans la colonne Current_11 par rapport aux lignes USL/LSL (sous Label) pour W11 (sous TestStage) comme limites dans la propriété de colonne Current_11
- enregistrez les valeurs de ligne apparaissant (en premier/en haut) dans la colonne Capacitance_6 par rapport aux lignes USL/LSL (sous Étiquette) pour U6 (sous TestStage) comme limites dans la propriété de colonne Capacitance_6
En général, comment écrire un script en JSL pour appliquer les limites de spécifications correspondant aux lignes LSL/USL (sous Étiquette) apparaissant (en premier/en haut) sous les colonnes de données mesurées (Breakdown_#, Resistance_#, Current_#, etc. on) correspondant au bon TestStage#, où # fait référence au numéro de l'étape de test.

Automatisation et scriptsles fenêtresRe : Comment créer un script pour appliquer les valeurs limites de spécifications apparaissant dans une colonne à sa propre propriété en fonction des étiquettes des autres colonnes ?Voici un script qui fonctionne avec vos exemples de données
Names Default To Here( 1 );
dt = Data Table( "exampleDataSummary" );
// Find all numeric columns and place in a list
numColList = dt << get column names( numeric, string );
// Find the unique values of TestStage
Summarize( dt, tstStage = By( :TestStage ) );
// Loop across all test stages and match with response column
stageNumber = "";
For Each( {Stage}, tstStage,
stageNumber = Substr( Stage, 2 );
resCol = "";
For Each( {col}, numColList,
If( Word( -1, col, "_" ) == stageNumber,
resCol = col
);
// Get LSL and USL
If( resCol != "",
theLSL = Column( dt, resCol )[(dt << get rows where( :TestStage == Stage & :label == "LSL" ))[1]];
theUSL = Column( dt, resCol )[(dt << get rows where( :TestStage == Stage & :label == "USL" ))[1]];
Show( theLSL, theUSL );
Eval(
Substitute(
Expr(
Column( dt, resCol ) << set property( "Spec Limits", {LSL( _LSL_ ), USL( _USL_ )} )
),
Expr( _LSL_ ), theLSL,
Expr( _USL_ ), theUSL
)
);
);
);
);Re : Comment créer un script pour appliquer les valeurs limites de spécifications apparaissant dans une colonne à sa propre propriété en fonction des étiquettes des autres colonnes ?@txnelson Oui merci. Le script fonctionne avec l'exemple de fichier de données. J'ai deux questions.
1. Je viens de réaliser que les noms de mes paramètres mesurés (colonnes) peuvent être de la forme Resistance_Null_Port_7, Capacitance_Full_Plate_6 etc. Comment modifier le script lorsqu'il y a plusieurs traits de soulignement dans les noms de colonnes avant que le numéro TestStage n'arrive à la fin. Je suppose que l'implémentation de la fonction Word() doit changer, mais j'ai du mal avec elle (c'est un peu déroutant de ne pas l'avoir utilisée auparavant).
2. Comment activer « Afficher sous forme de lignes de référence graphiques » par programme pour chaque colonne une fois les limites appliquées ? Je sais comment le faire manuellement via Gérer les limites des spécifications (). Je suis sur JMP 16.2.
Re : Comment créer un script pour appliquer les valeurs limites de spécifications apparaissant dans une colonne à sa propre propriété en fonction des étiquettes des autres colonnes ?Veuillez consulter l'index des scripts pour trouver les détails sur les différentes fonctions que j'ai utilisées dans le script que j'ai fourni.La fonction Word(), telle que je l'ai utilisée, ne se soucie pas du nombre de "_" dans les noms.Le premier terme de la fonction Word(), tel que je l'utilise, est un -1, qui demande à la fonction de prendre le premier mot, en commençant par la fin de la chaîne.
Pour indiquer à JMP d'afficher automatiquement les valeurs sous forme de lignes de référence, le paramètre "Show()" dans la spécification Spec Limits.
Column( dt, resCol ) << set property( "Spec Limits", {LSL( _LSL_ ), USL( _USL_ ), Show(1)} )
Veuillez prendre le temps d'étudier le script que j'ai fourni, pour vous aider à devenir un scripteur plus efficace.
Re : Comment créer un script pour appliquer les valeurs limites de spécifications apparaissant dans une colonne à sa propre propriété en fonction des étiquettes des autres colonnes ?@txnelson J'étudie votre code et merci d'avoir expliqué le fonctionnement de Word().
Jusqu'à présent, le script ne fonctionne pas pour mes données réelles (qui n'ont de différence que dans les noms de colonnes réels, c'est-à-dire avec plus de traits de soulignement).
Le problème est que le script s'exécute sans générer d'erreurs sur mes données réelles et qu'il n'y a rien dans le journal contrairement à l'exécution du même script sur l'exemple de table de données ci-joint ici. Je n’ai donc rien sur quoi m’accrocher pour le débogage.
J'avais déjà essayé show (1) pour montrer les limites à activer "Afficher sous forme de lignes de référence graphiques" par programme. Il ne fonctionne pas pour moi dans JMP 16.2 en utilisant les exemples de données publiés ici.
Je vais essayer de déboguer le script et je reviendrai vers vous si je trouve quelque chose. Il serait utile d'obtenir quelques pointeurs pour le débogage en l'absence de quoi que ce soit dans le journal.
Re : Comment créer un script pour appliquer les valeurs limites de spécifications apparaissant dans une colonne à sa propre propriété en fonction des étiquettes des autres colonnes ?Mon erreur, change
montrer(1)
à
afficher les limites(1)
Re : Comment créer un script pour appliquer les valeurs limites de spécifications apparaissant dans une colonne à sa propre propriété en fonction des étiquettes des autres colonnes ?@txnelson Il fallait changer
Substr( )
pour que le script fonctionne pour mes données réelles. Cependant, show (1) ne montre toujours pas les limites lorsqu'une distribution est tracée pour un paramètre mesuré.
Ce qui suit ne fonctionne pas non plus sur mon JMP16.2, c'est-à-dire que l'affichage des limites n'est pas activé "Afficher sous forme de lignes de référence de graphique" dans les propriétés de la colonne.
dt=Open("$SAMPLE_DATA/Process Measurements.jmp");
Column(dt, "Process 2")<<SET property=""></SET>Cependant, cela fait l'affaire.
Column( dt, resCol ) << set property( "Spec Limits", {LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )})