Tableau de rendementJ'essaie d'obtenir une table de rendement en utilisant une table comportant des limites de spécifications intégrées.
Pour une raison inconnue, la partie « nombre de lignes » ne donne rien d'autre que zéro. Auriez-vous une idée de ce que je fais 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 />);
Automatisation et scriptsObjet : Tableau de rendementJ'ai eu cette idée, si quelqu'un a une meilleure suggestion ?
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>Objet : Tableau de rendementJ'ai modifié cela pour avoir un seuil de rendement sélectionnable.
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>
Objet : Tableau de rendementSalut,
Si vous travaillez avec des limites de spécifications et des tables de rendement, il existe en fait un court didacticiel qui montre comment cela peut être fait sans script, au cas où vous recherchez une approche plus prête à l'emploi.
https://www.youtube.com/watch?v=1CjmA2hZhdg&t=315s
YieldOptiX est un module complémentaire basé sur JMP qui automatise la gestion des limites de spécifications, les synthèses de rendement et les rapports de binning. Il est généralement utilisé avec des données de test, mais les mêmes principes s'appliquent à tout ensemble de données structuré contenant des spécifications et des mesures.
Je pensais simplement partager cela au cas où vous seriez intéressé à explorer quelque chose de plus clé en main en plus de vos propres flux de travail.