グループによるプロセススクリーニンググループ化されたすべての変数がプロセス変数として含まれるプロセススクリーニングを自動化したいと考えています。
プロセススクリーニングで私が得る典型的なスクリプトは次のようになります
Process Screening(
Process Variables(
Column Group( "ENG" ),
Column Group( "REJ" )
),
Grouping( :WAFER, :LOT ),
Control Chart Type( "Indiv and MR" )
);
利用可能なグループのリストを作成することはできますが、それらをプロセス スクリーニングに追加する方法がわかりません。
Names Default To Here(1);
dt = Current Data Table();
Grps = dt << Get Column Groups Names;
ps = dt << Process Screening(
Process Variables(Column Group( Expr(Grps) )),
Grouping(:LOT, :WAFER),
Control Chart Type("Indiv and MR"),
Within Sigma(0),
Overall Sigma(0),
Stability Index(0),
Mean(0),
Show Tests(0),
Test 1(0),
Out of Spec Rate(0),
Latest Out of Spec(0),
Cpk(0),
Ppk(0)
);
上記のスクリプトは、リスト内の各項目を反復処理する必要があるため、処理が遅くなります。
自動化とスクリプトグループによるプロセススクリーニングについていくつかの方法を試しましたが、Eval(Parse()) メソッドに戻らなければなりませんでした。見苦しいですが、うまく機能します。
Names Default To Here( 1 );
dt = Current Data Table();
Grps = dt << Get Column Groups Names;
Eval(
Parse(
"ps = dt << Process Screening(
Process Variables(Column Group( \!"" || Grps[1] ||
"\!" )),
Grouping(:LOT, :WAFER),
Control Chart Type(\!"Indiv and MR\!"),
Within Sigma(0),
Overall Sigma(0),
Stability Index(0),
Mean(0),
Show Tests(0),
Test 1(0),
Out of Spec Rate(0),
Latest Out of Spec(0),
Cpk(0),
Ppk(0)
)"
)
);
グループによるプロセススクリーニングについてもっとひどいものを見たことがあります。鏡は持っています。うまくいきました。私の根本的な目的は、スペックが適用された列だけを選択することでした。私の場合はグループ化された列です。その後、別の方法で問題に取り組みましたが、これもうまくいきました。あなたのアプローチの方が気に入りました。
Names Default To Here( 1 );
dt = Current Data Table();
colList = dt << get column names( numeric, string );
SpecCols = {};
For Each( {colnames, index}, colList,
spec = Column( dt, colnames ) << get property( "Spec Limits" );
If( !Is Empty( spec ),
Insert Into( SpecCols, colnames )
);
);
ps = dt << Process Screening(
Process Variables( Eval( SpecCols ) ),
Grouping( :WAFER, :LOT ),
Control Chart Type( "Indiv and MR" ),
Within Sigma( 0 ),
Overall Sigma( 0 ),
Stability Index( 0 ),
Mean( 0 ),
Show Tests( 0 ),
Test 1( 0 ),
Out of Spec Rate( 0 ),
Latest Out of Spec( 0 ),
Cpk( 0 ),
Ppk( 0 )
);