皆さんこんにちは、
パレート関数の呼び出しで「By」のスクリプトを作成したいと思います。「By」でプロットされたパレート図は次のようになります。
Pareto Plot(Cause( :SBIN_NAM ), X( :Insertion ), Where( :lot_id == "4LU31HFN00_E95029" ))
「Where」は、「パレート関数」ダイアログボックスの「By」フィールドを実装します。
したがって、「lot_id」という列でパレート図をプロットしたいJMPスクリプトがあります。ただし、スクリプトを一般的なものにしたいので、「lot_id」が事前に何になるかわかりません。したがって、どの値が「Where」に渡されるかは、実行時に、データテーブルに実際に存在するlot_idによって決定されます。
最初に、データテーブルに「listOfLotIDs」と呼ばれるすべてのlot_idのリストを作成し、常識的なアプローチを試しました。これは機能しませんでした:
For( i = 1, i <= N Items( listOfLotIDs ), i++,
Pareto Plot( Cause( :SBIN_NAM ), X( :Insertion ), Per Unit Rates( 1 ), Show cumulative Percent Curve( 0 ), Where(:lot_id == listOfLotIDs[i] ));
);
しばらくして、コードが機能しないと思うようになりました。何らかの理由で、「Where」関数に渡される値を括弧内に定義する必要があるためです。実際の引用符-文字列変数だけを渡すことはできません。だから、私は別のバリアントを試しました:
For( i = 1, i <= N Items( listOfLotIDs ), i++,
sEval = "Pareto Plot( Cause( :SBIN_NAM ), X( :Insertion ), Per Unit Rates( 1 ), Show cumulative Percent Curve( 0 ), Where(:lot_id == \!"" || listOfLotIDs[i] || "\!"))";
eval(Parse(sEval));
print("PRINT OUTPUT: " || sEval);
);
「解析」関数はJMPスクリプトをコンパイルし、「eval」関数はコンパイルされたJMPスクリプトの一部を実行すると思いますか? ただし、これも機能しません。文字列を正しく組み立てていることを確認するために、文字列のprint()を含めました。これはログが言うことです:
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 cumulative 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 cumulative 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 cumulative 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 cumulative 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 cumulative Percent Curve( 0 ), Where(:lot_id == \!"4LU31HFR00_E94699\!"))"
では、いったい何が間違っているのでしょうか。エスケープされた引用符(\! ")はどのようにしてダッシュ"-"に変わりましたか?!助けてください。
ちなみに、フォーラムは私のメッセージ本文から「無効なHTML」を削除したと主張していますが、コードやエラーメッセージの一部が文字化けしている可能性があることに注意してください。
やあ、
エラーメッセージに基づくと、この問題は、Whereステートメントではなく、データテーブルの欠落している値の構造に関連している可能性があります。 あなたのデータ、またはあなたのデータのモックバージョンを共有することは可能でしょうか?
一番、
NS