Tabla de rendimientoEstoy intentando obtener una tabla de rendimiento usando una tabla que tiene límites de especificaciones incorporados.
Por alguna razón, la sección de recuento de filas solo muestra cero. ¿Alguna idea de qué estoy haciendo mal?
Clear Globals();
dt = Current Data Table();
dtYield = New Table( "Yield Table",
New Column( "Column Name", Character, "Nominal" ),
New Column( "Pass Count", Numeric, "Continuous" ),
New Column( "Fail Count", Numeric, "Continuous" ),
New Column( "Yield (Percent)", Numeric, "Continuous", Format( "Percent", 12 ) )
);
// Get all numeric columns
colList = dt << get column names( numeric, string );
// Loop across the columns and generate the test pass/fails
Try(For( i = 1, i <= N Items( colList ), i++,
spec = As Column( dt, colList[i] ) << get property( "Spec Limits" );
//Establish the Notes Value from the Parent Column
dt << clear select;
If( !Is Empty( specs ),
/* Extract spec limits */
lsl = spec["LSL"]; // Lower Spec Limit
usl = spec["USL"]; // Upper Spec Limit
/* Step 5: Evaluate pass and fail counts */
failCount = N Rows( dt << Get Rows Where( Column(dt, colList[i]) <= lsl)) + N Rows( dt << Get Rows Where( Column(dt, colList[i]) >= usl));
passCount = N Rows( dt << Get Rows Where( Column(dt, colList[i]) > lsl & Column(dt, colList[i]) < usl ) );
/* Step 6: Calculate yield */
yield = 100 * passCount / (passCount + failCount);
Show(yield);
/* Step 7: Add results to the yield table */
dtYield << Add Rows(1);
dtYield:Column Name[ N Rows( dtYield ) ] = As Column(colList[i]) << Get Name();
dtYield:Pass Count[ N Rows( dtYield ) ] = passCount;
dtYield:Fail Count[ N Rows( dtYield ) ] = failCount;
dtYield:Yield (Percent)[ N Rows( dtYield ) ] = yield;
);
);<BR />);
Automatización y scriptingRe: Tabla de rendimientoSe me ocurrió esto. ¿Alguien tiene una mejor sugerencia?
Clear Globals();
dt = Current Data Table();
dtYield = New Table( "Yield Table",
Add Rows(1),
New Column( "Column Name", Character, "Nominal" ),
New Column( "Pass Count", Numeric, "Continuous" ),
New Column( "Fail Count", Numeric, "Continuous" ),
New Column( "Yield", Numeric, "Continuous" ),
);
// Get all numeric columns
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)));
// Loop across the columns and generate the test pass/fails
For Each({colnames, index}, SpecCols,
spec = Column(dt, colnames) << get property( "Spec Limits" );
lsl = spec["LSL"]; // Lower Spec Limit
usl = spec["USL"]; // Upper Spec Limit
failCount = N Rows( dt << Get Rows Where((As Column(dt, colnames)[]<LSL>usl)));
passCount = N Rows( dt << Get Rows Where((As Column(dt, colnames)[]>lsl) & (As Column(dt, colnames)[]<USL></USL></LSL>Re: Tabla de rendimientoLo modifiqué para tener un umbral de rendimiento seleccionable.
ex = New Window( "Enter % Pass Threshold",
<<MODAL>usl)));
passCount = N Rows( dt << Get Rows Where((As Column(dt, colnames)[]>lsl) & (As Column(dt, colnames)[]<USL></USL></MODAL>
Re: Tabla de rendimientoHola,
Si está trabajando con límites de especificaciones y tablas de rendimiento, hay un breve tutorial que muestra cómo hacerlo sin necesidad de scripts, en caso de que esté buscando un enfoque más listo para usar.
https://www.youtube.com/watch?v=1CjmA2hZhdg&t=315s
YieldOptiX es un complemento basado en JMP que automatiza la gestión de límites de especificaciones, los resúmenes de rendimiento y los informes de binning. Se suele usar con datos de prueba, pero las mismas ideas se aplican a cualquier conjunto de datos estructurados con especificaciones y mediciones.
Solo pensé en compartirlo en caso de que estés interesado en explorar algo más completo junto con tus propios flujos de trabajo.