Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Liebe JMP-Community-Benutzer,
Ich bin neu bei JMP und hatte ein Problem. Hoffentlich konnte ich Hilfe von euch bekommen.
Ich habe eine Datentabelle. Ich möchte einen Diagrammersteller für Spalten nur mit bestimmten Werten ausführen.
Zum Beispiel möchte ich Zellen auswählen, die zu AB766 und RSDF gehören, die Spalten „monitor_set_name“ und „measurement_set_name“ sowie andere Spalten und Zeilen, die „AB766“ und „RSDF“ entsprechen.

Dann möchte ich „Graph Builder“ für die Tabelle ausführen, die die von mir benötigten Informationen enthält.
Wenn „monitor_set_name“ und „measurement_set_name“ nicht „AB766“ und „RSDF“ enthalten, überspringe ich die Ausführung des „Graph Builder“.
Könntest du mir ein paar Ratschläge geben?
Aufrichtig,
MassenanpassungBetreff: Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Sehr geehrter Herr Brady,
Danke für deine Hilfe. Ich werde Ihren Vorschlag später in meinem Skript anwenden.
Aufrichtig,
Betreff: Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Lass es mich versuchen. Vielen Dank.
Übrigens habe ich eine Methode gefunden, die im Forum vorgeschlagen wurde und die bei mir funktioniert
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 )
)
);
Vielen Dank für Ihre starke Unterstützung!
Betreff: Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Die Funktion Try() ist eine Möglichkeit, damit umzugehen.
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 hat einen gültigen Wert, wenn die Spalte und Zeile vorhanden sind. Wenn der Versuch jedoch fehlschlägt, wird ein fehlender Wert zurückgegeben.daher könnte der Fluss so etwas sein
Betreff: Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Lieber Txnelson,
JMP wird nicht mehr ausgeführt, wenn keine referenzierte Spalte gefunden wird –> Sie haben Recht
Ich möchte meine Frage klären. Ich versuche, Daten aus dem System in meinem Unternehmen abzurufen. Aufgrund unterschiedlicher Produktkategorien wird die Datentabelle unterschiedlich sein.
Zum Beispiel:
Produkt A: enthält Spalte: up_control_lmt@u1_holdforceduration_2 Und up_control_lmt@u2_holdforceduration_2
Produkt B: enthält nur die Spalte: up_control_lmt@u1_holdforceduration_2
Da ich ein Skript erstellen möchte, das für beide Produkte angewendet werden kann.
In Ihrem Vorschlag muss ich eine weitere Spalte für Produkt B hinzufügen, wenn die Datentabelle von Produkt B keine Spalte enthält: up_control_lmt@u2_holdforceduration_2.
Daher kann ich mit einer Funktion überprüfen, ob die Datentabelle von Produkt B Folgendes enthält oder nicht: up_control_lmt@u2_holdforceduration_2. -> wenn die Datentabelle Folgendes enthält: up_control_lmt@u2_holdforceduration_2. , Ich werde der Datentabelle eine neue Spalte hinzufügen.
Hoffentlich konnten Sie meine Frage verstehen?
Aufrichtig,
Betreff: Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Ich bin verwirrt.Sie geben an, dass Sie Werte aus einer bestimmten Spalte, Zelle 1, lesen möchten, dass Sie jedoch nicht über eine solche Spalte verfügen.
JMP stoppt die Ausführung, wenn keine referenzierte Spalte gefunden werden kann.Daher wird die Verarbeitung nicht fortgesetzt, sobald der Fehler gefunden wird.
Wenn Sie über eine solche Spalte nicht verfügen und diese haben möchten, müssen Sie die Spalte zur Datentabelle hinzufügen und Zelle 1 mit dem gewünschten Wert füllen.Das ist die Lösung...aber ich glaube nicht, dass ich die Frage wirklich verstehe.
Betreff: Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Lieber Txnelson,
Es klappt. Vielen Dank für Ihren Vorschlag. Ich werde den Scripting Guide zum Studium heranziehen.
In der Zwischenzeit habe ich noch weitere Fragen.
Ich möchte einen Wert aus der Zelle der Spalte extrahieren und den Wert dann Variablen zuweisen, da ich Variablen für die grafische Darstellung verwenden möchte.
Falls meine Tabelle jedoch keine Spalte enthält: lo_control_lmt@u2_holdforceduration_2 oder : up_control_lmt@u2_holdforceduration_2 , mein Skript zeigt kein Diagramm an
Wenn ich in meinem Skript unten zwei Zeilen lösche, zeigt mein Skript das Diagramm an
U2_UCL_HDF = Column(dt,"up_control_lmt@u2_holdforceduration_2")[1];
U2_LCL_HDF = Column(dt,"lo_control_lmt@u2_holdforceduration_2")[1];
Haben Sie eine Lösung für diesen Fall? Aufrichtig.
Mein Skript:
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
)
)
)
);Betreff: Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Ihre Variable „df“ zeigt auf die Teilmenge der Datentabelle.Wenn Sie einen Bericht aus einer Datentabelle erstellen, wird dieser nicht Teil der Datentabelle.Es ist eine Einheit für sich.Der einfachste Weg, auf den erstellten Bericht zuzugreifen, besteht daher darin, eine Variable anzugeben, die darauf verweist.Ich habe dies in der folgenden Modifikation Ihres Skripts getan.
gb = df << Graph Builder(
Die Variable „gb“ zeigt auf das Graph Builder-Objekt.Später im Code wird die Meldung „Bild speichern“ auf den von der Graph Builder-Plattform generierten Bericht angewendet
report(gb) << save picture( "C:\Users\lamquocb\image.jpg" );
Hier ist das geänderte Skript
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" );
Ich empfehle Ihnen dringend, sich die Zeit zu nehmen, den Scripting Guide zu lesen, der in der JMP-Dokumentationsbibliothek im Pulldown-Menü „Hilfe“ verfügbar ist!
Betreff: Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Lieber Txnelson,
Es klappt. Schätzen Sie viel.
Ich versuche, Ihrer Anleitung zu folgen und sie für mich selbst anzuwenden
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" );
Allerdings stoße ich auf ein anderes Problem, dass ich das Bild nicht speichern konnte – den Graph Builder für df.
Ich versuche, auf den Ort zuzugreifen, an dem ich das Bild speichern möchte, konnte aber keinen finden.
Hast du irgendeinen Ratschlag?
Aufrichtig,
Betreff: Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Hallo,
Wenn Sie neu bei JMP sind, sollten Sie sich unbedingt den Local Data Filter und Column Switcher ansehen. Der lokale Datenfilter wird Ihnen hier wahrscheinlich weiterhelfen ... Ich habe in mein Beispiel einen Spaltenumschalter eingefügt, um Ihnen zu zeigen, was er kann.
Klicken Sie einfach auf die Menüpunkte, um Ihr Diagramm auf die Daten zu beschränken, die Sie berücksichtigen möchten. Es ist keine Codierung erforderlich und es ist einfach zu verwenden ... jeder kann sie verwenden.
Um den lokalen Datenfilter zu erhalten, wählen Sie im roten Dreiecksmenü von Graph Builder die Option „Lokalen Datenfilter hinzufügen“ aus.
Um den Spaltenumschalter zu erhalten, wählen Sie im Hauptmenü „Wiederherstellen“ > „Spaltenumschalter“. Sie müssen außerdem die Spalte auswählen, die Sie austauschen möchten, und die Spalten, zwischen denen Sie rotieren möchten. Stellen Sie sicher, dass Sie die Spalte, die Sie austauschen möchten, in diesen Satz aufnehmen. Alle Spalten müssen vom gleichen Datentyp sein.
Führen Sie das folgende Skript aus, um einen Blick auf diese in Aktion zu werfen.
Beifall,
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}
)
);
Betreff: Wie können JSL-Befehle ausgeführt werden, nachdem die Bedingungen erfüllt sind?Um die JSL unten zu generieren, habe ich einfach die Schritte interaktiv ausgeführt, dann den Code aus dem Protokoll genommen und ihn in ein Skriptfenster eingefügt.
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 ) ) )
);