Evaluación de procesos por gruposQuiero automatizar un proceso de selección, mediante el cual todas las variables agrupadas se incluyan como variables de proceso.
El guión típico que recibo para la evaluación del proceso se ve así
Process Screening(
Process Variables(
Column Group( "ENG" ),
Column Group( "REJ" )
),
Grouping( :WAFER, :LOT ),
Control Chart Type( "Indiv and MR" )
);
Puedo crear una lista de grupos disponibles, pero no logro descubrir cómo agregarlos al proceso de selección.
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)
);
El script anterior se bloquea porque necesita iterar a través de cada elemento de la lista.
Automatización y scriptingRe: Evaluación de procesos por gruposProbé un par de métodos, pero tuve que volver a un método Eval(Parse())... feo, pero funciona.
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)
)"
)
);
Re: Evaluación de procesos por gruposHe visto cosas más feas; tengo un espejo. Funciona bien. Mi objetivo inicial era seleccionar solo columnas con especificaciones aplicadas, lo que en mi caso significa columnas agrupadas. Posteriormente, abordé el problema desde una perspectiva diferente que también funciona. Me gusta más tu enfoque.
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 )
);