Hallo alle,
Ich möchte das "By" in einem Aufruf der Pareto-Funktion skripten.Ich stelle fest, dass Pareto-Plots, die "By" gezeichnet wurden, so aussehen:
Pareto Plot(Cause( :SBIN_NAM ), X( :Insertion ), Where( :lot_id == "4LU31HFN00_E95029" ))
Das „Wo“ implementiert das „By“-Feld aus dem Pareto-Funktionsdialogfeld.
Ich habe also ein JMP-Skript, in dem ich Pareto-Diagramme nach einer Spalte namens "lot_id" zeichnen möchte.Ich möchte jedoch, dass das Skript allgemein ist, damit ich nicht weiß, was die "lot_id"s im Voraus sein werden.Welche Werte also an "Where" übergeben werden, wird zur Laufzeit durch die tatsächlich in der Datentabelle vorhandenen lot_ids bestimmt.
Zuerst habe ich eine Liste aller lot_ids mit dem Namen "listOfLotIDs" in der Datentabelle erstellt und den gesunden Menschenverstand ausprobiert.Das hat nicht funktioniert:
For( i = 1, i <= N Items( listOfLotIDs ), i++,
Pareto Plot( Cause( :SBIN_NAM ), X( :Insertion ), Per Unit Rates( 1 ), Show Cum Percent Curve( 0 ), Where(:lot_id == listOfLotIDs[i] ));
);
Nach einiger Zeit kam ich zu der Überzeugung, dass mein Code nicht funktionierte, da der an die "Where"-Funktion übergebene Wert aus irgendeinem mir unbekannten Grund innerhalb der Klammern mit definiert werden muss eigentliche Anführungszeichen - Sie können ihm nicht einfach eine Zeichenfolgenvariable übergeben.Also habe ich eine andere Variante ausprobiert:
For( i = 1, i <= N Items( listOfLotIDs ), i++,
sEval = "Pareto Plot( Cause( :SBIN_NAM ), X( :Insertion ), Per Unit Rates( 1 ), Show Cum Percent Curve( 0 ), Where(:lot_id == \!"" || listOfLotIDs[i] || "\!"))";
eval(Parse(sEval));
print("PRINT OUTPUT: " || sEval);
);
Ich glaube, die Funktion "parse" kompiliert ein JMP-Skript und die Funktion "eval" führt ein Stück kompiliertes JMP-Skript aus? Dies funktioniert jedoch AUCH nicht.Ich habe print() der Zeichenfolge eingefügt, um sicherzustellen, dass ich die Zeichenfolge korrekt zusammenbaue.Das sagt das Log:
Error for Pareto Plot on data table 'Subset of 4LU31HFN00_E95029,4LU31HFO00_E93847,4LU31HFP00_E93 20 Where(lot_id == -4LU31HFN00_E95029-)' : One or more columns have missing values on all rows.
"PRINT OUTPUT: Pareto Plot( Cause( :SBIN_NAM ), X( :Insertion ), Per Unit Rates( 1 ), Show Cum Percent Curve( 0 ), Where(:lot_id == \!"4LU31HFN00_E95029\!"))"
Error for Pareto Plot on data table 'Subset of 4LU31HFN00_E95029,4LU31HFO00_E93847,4LU31HFP00_E93 20 Where(lot_id == -4LU31HFO00_E93847-)' : One or more columns have missing values on all rows.
"PRINT OUTPUT: Pareto Plot( Cause( :SBIN_NAM ), X( :Insertion ), Per Unit Rates( 1 ), Show Cum Percent Curve( 0 ), Where(:lot_id == \!"4LU31HFO00_E93847\!"))"
Error for Pareto Plot on data table 'Subset of 4LU31HFN00_E95029,4LU31HFO00_E93847,4LU31HFP00_E93 20 Where(lot_id == -4LU31HFP00_E93981-)' : One or more columns have missing values on all rows.
"PRINT OUTPUT: Pareto Plot( Cause( :SBIN_NAM ), X( :Insertion ), Per Unit Rates( 1 ), Show Cum Percent Curve( 0 ), Where(:lot_id == \!"4LU31HFP00_E93981\!"))"
Error for Pareto Plot on data table 'Subset of 4LU31HFN00_E95029,4LU31HFO00_E93847,4LU31HFP00_E93 20 Where(lot_id == -4LU31HFQ00_E95030-)' : One or more columns have missing values on all rows.
"PRINT OUTPUT: Pareto Plot( Cause( :SBIN_NAM ), X( :Insertion ), Per Unit Rates( 1 ), Show Cum Percent Curve( 0 ), Where(:lot_id == \!"4LU31HFQ00_E95030\!"))"
Error for Pareto Plot on data table 'Subset of 4LU31HFN00_E95029,4LU31HFO00_E93847,4LU31HFP00_E93 20 Where(lot_id == -4LU31HFR00_E94699-)' : One or more columns have missing values on all rows.
"PRINT OUTPUT: Pareto Plot( Cause( :SBIN_NAM ), X( :Insertion ), Per Unit Rates( 1 ), Show Cum Percent Curve( 0 ), Where(:lot_id == \!"4LU31HFR00_E94699\!"))"
Also, was in aller Welt ist falsch?Wie wurden meine Escape-Anführungszeichen (\!") in Bindestriche "-" umgewandelt?!Bitte helfen Sie.