Comment exécuter les commandes JSL une fois les conditions rempliesChers utilisateurs de la communauté JMP,
Je suis un nouveau pour JMP et j'ai été confronté à un problème. J'espère que je pourrais obtenir de l'aide de vous les gars.
J'ai un tableau de données. Je voudrais exécuter un générateur de graphique pour les colonnes uniquement certaines valeurs spécifiques.
Par exemple, je voudrais sélectionner des cellules appartenant aux colonnes AB766 et RSDF "monitor_set_name" et "measurement_set_name" ; et d'autres colonnes et lignes correspondant à " AB766" et "RSDF"

Ensuite, je voudrais lancer " Graph builder " pour la table qui contient les informations dont j'ai besoin.
Si "monitor_set_name" et "measurement_set_name" ne contiennent pas "AB766" et "RSDF", je vais sauter pour exécuter le "graph builder"
Pourriez-vous me donner des conseils?
Sincèrement,
Personnalisation de masseRe : Comment exécuter les commandes JSL une fois les conditions rempliesCher Monsieur Brady,
Merci pour votre aide. J'appliquerai votre suggestion plus tard dans mon script.
Sincèrement,
Re : Comment exécuter les commandes JSL une fois les conditions rempliesLaissez-moi essayer Merci beaucoup.
Au fait, j'ai trouvé une méthode qui a été suggérée dans le forum et cela fonctionne pour moi
CHECK_U2_CT_HDF = Contains(
df << get column names( string ),
"centerline@u2_holdforceduration_2"
);
If( CHECK_U2_CT_HDF == 0,
df << New Column( "centerline@u2_holdforceduration_2",
Numeric,
Continuous,
Format( "Best", 10 )
)
);
Merci pour votre soutien fort!
Re : Comment exécuter les commandes JSL une fois les conditions rempliesLa fonction Try() est un moyen de gérer cela.
U1_UCL_HDF =Try( Column( dt, "up_control_lmt@u1_holdforceduration_2" )[1],.);
if(isMissing(:U1_UCL_HDF),
add and populate the new column
);
U1_UCL_HDF aura une valeur valide si la colonne et la ligne existent, mais si la tentative échoue, il renverra une valeur manquante.donc le flux pourrait être quelque chose comme
Re : Comment exécuter les commandes JSL une fois les conditions rempliesCher txnelson,
JMP s'arrêtera de s'exécuter lorsqu'il ne pourra pas trouver une colonne référencée --> vous avez raison
Je voudrais clarifier ma question. Le fait est que j'essaie d'obtenir des données du système de mon entreprise. En raison des différentes catégories de produits, le tableau de données sera différent.
Par exemple:
Produit A : contient la colonne : up_control_lmt@u1_holdforceduration_2 et up_control_lmt@u2_holdforceduration_2
Produit B : ne contient que la colonne : up_control_lmt@u1_holdforceduration_2
Puisque je veux créer un script qui peut être appliqué aux deux produits.
Dans votre suggestion, je dois ajouter une colonne supplémentaire pour le produit B si la table de données du produit B ne contient pas de colonne : up_control_lmt@u2_holdforceduration_2.
Par conséquent, avec la fonction que je peux utiliser pour vérifier si la table de données du produit B contient ou non : up_control_lmt@u2_holdforceduration_2. --> si la table de données contient : up_control_lmt@u2_holdforceduration_2. , Je vais ajouter une nouvelle colonne à la table de données.
J'espère que vous pourriez comprendre ma question?
Sincèrement,
Re : Comment exécuter les commandes JSL une fois les conditions rempliesJe suis confus.Vous indiquez que vous voulez lire les valeurs d'une colonne spécifiée, la cellule 1, mais que vous n'avez pas une telle colonne.
JMP s'arrête lorsqu'il ne trouve pas de colonne référencée.Par conséquent, il ne poursuivra pas le traitement une fois l'erreur détectée.
Si vous n'avez pas une telle colonne et que vous voulez l'avoir, vous devrez ajouter la colonne à la table de données et remplir la cellule 1 avec la valeur que vous voulez qu'elle ait.C'est la solution ....... mais je ne pense pas que je comprends vraiment la question.
Re : Comment exécuter les commandes JSL une fois les conditions rempliesCher Txnelson,
Ça marche. Merci de votre suggestion. Je vais référer le Guide de Scripting pour étude.
En attendant, j'ai plus de question.
Je voudrais extraire la valeur de la cellule de la colonne, puis attribuer la valeur aux variables puisque je voudrais utiliser des variables pour la représentation graphique.
Cependant, dans le cas où ma table ne contient pas de colonne : lo_control_lmt@u2_holdforceduration_2 ou : up_control_lmt@u2_holdforceduration_2 , mon script ne montre aucun graphique
Si je supprime 2 lignes dans mon script ci-dessous, mon script affichera le graphique
U2_UCL_HDF = Colonne(dt,"up_control_lmt@u2_holdforceduration_2")[1] ;
U2_LCL_HDF = Colonne(dt,"lo_control_lmt@u2_holdforceduration_2")[1] ;
Avez-vous une solution pour ce cas. Sincèrement.
Mon scénario :
U1_UCL_HDF = Column( dt, "up_control_lmt@u1_holdforceduration_2" )[1]; //extract value from cell
U1_LCL_HDF = Column( dt, "lo_control_lmt@u1_holdforceduration_2" )[1]; //extract value from cell
U2_UCL_HDF = Column( dt, "up_control_lmt@u2_holdforceduration_2" )[1]; //extract value from cell
U2_LCL_HDF = Column( dt, "lo_control_lmt@u2_holdforceduration_2" )[1]; // extract value from cell
NW = New Window( "KPP summarize",
Variability Chart(
Y( :HOLDFORCEDURATION_2 ),
X( :COMPLEVEL_1, :LINK_ID, :TEST_OR_BOND_HEAD_ID, :LOT, :BONDSTAGE, :CARRIER_X ),
Max Iter( 100 ),
Conv Limit( 0.00000001 ),
Number Integration Abscissas( 128 ),
Number Function Evals( 65536 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Connect Cell Means( 1 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
AIAG Labels( 0 ),
SendToReport(
Dispatch(
{"Variability Chart for HOLDFORCEDURATION_2"},
"2",
ScaleBox,
{Min( 332 ), Max( 641 ), Inc( 50 ), Minor Ticks( 1 ),
Add Ref Line( 0, "Dotted", "Medium Light Gray", "", 1 ),
Add Ref Line( U1_UCL_HDF, "Solid", "Red", "UCL_U1", 2 ),
Add Ref Line( U1_LCL_HDF, "Solid", "Red", "LCL_U1", 2 ), // put the value in here extract
Add Ref Line( U1_CT_HDF, "DashDot", "Red", "CL_U1", 2 ), // put the value in here extract
Add Ref Line( U2_UCL_HDF, "Solid", "BlueCyan", "UCL_U2", 2 ), // put the value in here extract
Add Ref Line( U2_LCL_HDF, "Solid", "BlueCyan", "LCL_U2", 2 ), // put the value in here extract
Add Ref Line( U2_CT_HDF, "DashDot", "BlueCyan", "CL_U2", 2 )} // put the value in here extract
)
)
)
);Re : Comment exécuter les commandes JSL une fois les conditions rempliesVotre variable "df" pointe vers la table de données du sous-ensemble.Lorsque vous créez un rapport à partir d'une table de données, il ne fait pas partie de la table de données.C'est une entité sur elle-même.Par conséquent, le moyen le plus simple d'accéder au rapport créé consiste à spécifier une variable pour y pointer.Je l'ai fait dans la modification ci-dessous de votre script.
gb = df << Graph Builder(
La variable "gb" pointe vers l'objet Graph Builder.Plus loin dans le code, le message Save Picture est appliqué au rapport généré par la plateforme Graph Builder
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
Voici le script modifié
names default to here( 1 );
dt = Open( "raw_data.csv", "invisible" );
dt << Select Where(
:monitor_set_name == "CSP_FAST_TC" & :spc_chart_subset == "STDDEV" & :measurement_set_name == "U1_X"
);
df = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ), "invisible" );
gb = df << Graph Builder(
Size( 1056, 675 ),
Show Control Panel( 0 ),
Automatic Recalc( 0 ),
Variables(
X( :spc_txn_date ),
Y( :chart_value ),
Y( :lo_control_lmt, Position( 1 ) ),
Y( :up_control_lmt, Position( 1 ) ),
Y( :centerline, Position( 1 ) ),
Group Y( :monitor_set_name ),
Group Y( :measurement_set_name ),
Group Y( :spc_chart_subset ),
Wrap( :spc_entity )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 25 ), Connection( "Curve" ), Smoothness( 0.5 ) )
),
SendToReport(
Dispatch( {}, "spc_txn_date", ScaleBox, {Label Row( Automatic Font Size( 0 ) )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
25,
Properties( 2, {Line Color( 19 )} ),
Properties( 3, {Line Color( 0 ), Line Style( "Dotted" )} )
)}
)
)
);
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
Je vous recommande vivement de prendre le temps de lire le Guide de création de scripts, disponible dans la bibliothèque de documentation JMP, accessible dans le menu déroulant Aide !
Re : Comment exécuter les commandes JSL une fois les conditions rempliesCher txnelson,
Ça marche. Apprécie beaucoup.
J'essaie de suivre vos conseils et de les appliquer pour moi-même
dt = Open( "raw_data.csv", "invisible" );
dt << Select Where(
:monitor_set_name == "CSP_FAST_TC" & :spc_chart_subset == "STDDEV" & :measurement_set_name == "U1_X"
);
df = dt << Subset( Selected Rows( 1 ), Selected columns only( 0 ), "invisible" );
df << Graph Builder(
Size( 1056, 675 ),
Show Control Panel( 0 ),
Automatic Recalc( 0 ),
Variables(
X( :spc_txn_date ),
Y( :chart_value ),
Y( :lo_control_lmt, Position( 1 ) ),
Y( :up_control_lmt, Position( 1 ) ),
Y( :centerline, Position( 1 ) ),
Group Y( :monitor_set_name ),
Group Y( :measurement_set_name ),
Group Y( :spc_chart_subset ),
Wrap( :spc_entity )
),
Elements(
Line( X, Y( 1 ), Y( 2 ), Y( 3 ), Y( 4 ), Legend( 25 ), Connection( "Curve" ), Smoothness( 0.5 ) )
),
SendToReport(
Dispatch( {}, "spc_txn_date", ScaleBox, {Label Row( Automatic Font Size( 0 ) )} ),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
25,
Properties( 2, {Line Color( 19 )} ),
Properties( 3, {Line Color( 0 ), Line Style( "Dotted" )} )
)}
)
)
);
df << save picture( "C:\Users\lamquocb\image.jpg" );
Cependant, je rencontre un autre problème dans lequel je n'ai pas pu enregistrer l'image - le générateur de graphiques pour df.
J'essaie d'accéder à l'emplacement où je veux stocker la photo, mais je n'en ai pas trouvé.
Avez-vous des conseils?
Sincèrement,
Re : Comment exécuter les commandes JSL une fois les conditions rempliesSalut,
Si vous débutez avec JMP, assurez-vous de consulter le filtre de données local et le sélecteur de colonne. Le filtre de données locales vous aidera probablement ici... J'ai inclus un sélecteur de colonne dans mon exemple juste pour vous faire savoir ce qu'il peut faire.
Cliquez simplement sur les éléments du menu pour limiter votre graphique aux données que vous souhaitez prendre en compte. Aucun codage n'est requis et il est facile à utiliser... tout le monde peut les utiliser.
Pour obtenir le filtre de données locales, dans le menu du triangle rouge de Graph Builder, sélectionnez Ajouter un filtre de données locales.
Pour obtenir le sélecteur de colonne, sélectionnez Rétablir > Sélecteur de colonne dans le menu principal. Vous devrez également sélectionner la colonne que vous souhaitez échanger et les colonnes entre lesquelles vous souhaitez effectuer une rotation. Assurez-vous d'inclure la colonne que vous souhaitez échanger dans cet ensemble. Toutes les colonnes doivent être du même type de données.
Exécutez le script ci-dessous pour avoir un aperçu de ceux-ci en action.
Acclamations,
brady

Names Default To Here(1);
dt = open ("$Sample_Data\Car Physical Data.jmp");
Graph Builder(
Size( 526, 448 ),
Show Control Panel( 0 ),
Variables( X( :Country ), Y( :Gas Tank Size ) ),
Elements( Box Plot( X, Y, Legend( 8 ) ), Points( X, Y, Legend( 9 ) ) ),
Local Data Filter(
Show Histograms and Bars( 0 ),
Add Filter(
columns( :Type ),
Where( :Type == "Compact" ),
Display( :Type, N Items( 5 ) )
)
),
Column Switcher(
:Gas Tank Size,
{:Weight, :Turning Circle, :Displacement, :Horsepower, :Gas Tank Size}
)
);
Re : Comment exécuter les commandes JSL une fois les conditions rempliesPour générer le JSL ci-dessous, j'ai simplement exécuté les étapes de manière interactive, puis j'ai récupéré le code du journal et l'ai collé dans une fenêtre de script.
names default to here(1);
// Open Data Table: big class.jmp
// → Data Table( "big class" )
Open( "$SAMPLE_DATA/big class.jmp" );
// Select matching cells
Data Table( "big class" ) << Select Where( :age == 12 & :sex == "F" );
// Subset data table
// → Data Table( "Subset of big class" )
Data Table( "big class" ) << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
// Report snapshot: Subset of big class - Graph Builder
Data Table( "Subset of big class" ) << Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) )
);
// Invert current selection
Data Table( "big class" ) << Invert Row Selection;
// Subset data table
// → Data Table( "Subset of big class 2" )
Data Table( "big class" ) << Subset( Selected Rows( 1 ), Selected columns only( 0 ) );
// Report snapshot: Subset of big class 2 - Graph Builder
Data Table( "Subset of big class 2" ) <<
Graph Builder(
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);