Modification du titre de la distribution en faisant correspondre WaferID avec l'instruction ByBonjour,
Je voudrais modifier le titre de mes graphiques de distribution pour qu'il soit un peu plus descriptif et plus facile à faire correspondre avec un autre graphique que j'ai créé. Je voudrais que le titre de chaque graphique soit "Wafer = XYZ..., BatchID = ABC..."

Le code que j'ai créé ci-dessous me permet de modifier le titre, cependant, il répertorie, sans surprise, tous les batchids répertoriés dans le tableau associatif que j'ai créé précédemment. (ce tableau répertorie simplement tous les batchID dans une colonne d'une table que j'ai). Ce que je voudrais faire, c'est faire correspondre le Wafer au BatchID et l'afficher dans le titre de chaque graphique avec une instruction By. Est-ce qu'il y a un moyen de faire ça? Merci!
//DISTRIBUTION PLOT
batchids = Associative Array( BatchIDs:BatchID );
RawData << Distribution(
Stack( 1 ),
Automatic Recalc( 1 ),
Continuous Distribution(
Column( :col1 ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
Local Data Filter(
Close Outline( 1 ),
Add Filter( columns( :FailDie ), Where( :FailDie == 0 ) ) ),
By( :Wafer ),
SendToReport(
Dispatch(
{},
"Distributions Wafer=XYZ",
OutlineBox,
{Set Title(
"Distributions Wafer=XYZ, Batch ID = " || Char( batchids << Get Keys )
)}
)
)
);Personnalisation de masseRe : Modification du titre de distribution en faisant correspondre WaferID avec By Statementapparemment, votre version de JMP renvoie un scaler lorsqu'une seule valeur est renvoyée.Re : Modification du titre de distribution en faisant correspondre WaferID avec By StatementJ'utilise JMP 14.
Curieusement, le script s'exécute correctement lorsque je supprime le [1] de cette ligne de code. Laissant tout le reste pareil.
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))[1]];
Changé pour être :
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))];
Merci encore pour votre aide!
Re : Modification du titre de distribution en faisant correspondre WaferID avec By StatementMon erreur sur mon exemple de script.Voir ci-dessous pour utiliser l'exemple de tableau de données que j'utilisais.
Quelle version de JMP utilisez-vous ?
Dans mon exemple de programme que j'ai fourni, changez la ligne
dt = current data table();
pour
dt = open("$sample_data/semiconductor capability.jmp");
puis exécutez le script.Cela devrait fonctionner sans erreur.
Re : Modification du titre de distribution en faisant correspondre WaferID avec By StatementBref non. Je n'arrive pas à le faire fonctionner avec la table dont j'ai besoin. D'après ce que je peux dire, cela a du sens et devrait fonctionner. L'erreur que j'ai envoyée dans mon dernier message (désolé, je n'ai pas vu que vous avez répondu) est ce qui continue de s'afficher. La seule chose que je n'ai pas tout à fait comprise est le [1] à la fin de cette ligne :
theLot = AllTheBatchIDs:BatchID[(AllTheBatchIDs << get rows where( :Wafer == theWafer ))[1]];
Qu'est ce que ça fait? Aucune suggestion?
Re : Modification du titre de distribution en faisant correspondre WaferID avec By Statementindice non valide (doit être un nombre ou une liste de nombres){1} dans l'accès ou l'évaluation de....
message d'erreur pour "theLot"Re : Modification du titre de distribution en faisant correspondre WaferID avec By StatementL'exemple que j'ai fourni dans ma dernière réponse vous convient-il ? Cela doit être le point de départ.Re : Modification du titre de distribution en faisant correspondre WaferID avec By StatementSalut txnelson ! Merci encore pour une réponse rapide et une solution géniale.
J'ai toujours des problèmes avec ma table de recherche. Il semble que "theWafer" soit trouvé correctement, mais lorsque je l'exécute dans le débogueur, "theLot" ne se remplit pas. Avez-vous eu des problèmes avec cela? Ci-joint mon code exact. Mes en-têtes ressemblent à "Distributions Wafer = ABC123, BatchID = ."
BatchIDs = table de recherche pour référence
| ID de lot | Tranche |
| QQQ1234 | ABC-123 |
| AAAA1234 | QWE-456 |
For( i = 1, i <= N Items( VthNew ), i++,
theWafer = char(word(-1,Report( VthNew[i] )[Outline Box( 1 )] << get title,"="));
theLot = BatchIDs:BatchID[(BatchIDs << get rows where(:Wafer == theWafer))[1]];
Report( VthNew[i] )[Outline Box( 1 )] <<
Set title(
Report( VthNew[i] )[Outline Box( 1 )] << get title || " BatchID =" || Char(theLot)
)
);
Merci pour l'aide!
Re : Modification du titre de distribution en faisant correspondre WaferID avec By StatementIl est simple de supprimer la valeur de la plaquette de la boîte de contour () pour la distribution, puis de faire une recherche à partir de la table de données de recherche et d'obtenir le BatchID, ou dans le cas de mon exemple, d'obtenir le Lot_id, puis de l'ajouter au titre de l'Outline Box().

Names Default To Here( 1 );
dt = Current Data Table();
batchids = Associative Array( dt:lot_id );
dtlookup =New Table( "Lookup",
Add Rows( 24 ),
New Column(
["en" => "wafer", "ja" => "ウエハー", "x-id" => "S_wafer_Col", "zh-CN" => "晶片"],
Numeric( 1 ),
"Nominal",
Set Values(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24]
),
Lock( 1 )
),
New Column( "lot_id",
Character,
"Nominal",
Set Values(
{"lot01", "lot02", "lot03", "lot04", "lot05", "lot06", "lot07", "lot08",
"lot09", "lot10", "lot11", "lot12", "lot13", "lot01", "lot02", "lot03",
"lot04", "lot05", "lot06", "lot07", "lot08", "lot09", "lot10", "lot11"}
)
)
);
Dis = dt << Distribution(
Stack( 1 ),
Automatic Recalc( 1 ),
Continuous Distribution(
Column( :npn1 ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
Local Data Filter(
Close Outline( 1 ),
Add Filter( columns( :site ), Where( :site == 1 ) )
),
By( :Wafer )
);
For( i = 1, i <= N Items( Dis ), i++,
theWafer = num(word(-1,Report( dis[i] )[Outline Box( 1 )] << get title,"="));
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))[1]];
Report( dis[i] )[Outline Box( 1 )] <<
Set title(
Report( dis[i] )[Outline Box( 1 )] << get title || " Lot="
|| Char(thelot)
)
);Re : Modification du titre de distribution en faisant correspondre WaferID avec By StatementBonjour txnelson,
Merci encore pour une réponse rapide. Cela se rapproche de ce que je veux, sauf pour chaque Wafer, seul 1 BatchID doit être affiché, pas tous. Peut-être que regarder un exemple de table aura plus de sens.
Je veux que les titres de mes graphiques de distribution soient "Distribution Wafer = A, BatchID = X" et "Distribution Wafer = B, BatchID = X" etc. Cependant, je ne comprends pas très bien les moyens par lesquels je peux être sûr que je suis faire correspondre la Wafer au bon BatchID. (ou comment les faire correspondre du tout d'ailleurs)
Remarque : J'ai une table qui correspond à chaque Wafer à son BatchID déjà disponible.
| ID de lot | Tranche |
| X | UN |
| X | B |
| X | C |
| Oui | D |
Oui | E |
| Oui | F |
| Z | g |
| Z | H |
| Z | je |
Une autre question secondaire que j'avais était la suivante : pour le code que vous venez d'envoyer, il semble qu'il mette à jour tous les titres de mes graphiques, à l'exception de mon premier dans l'instruction By. Connaissez-vous les raisons courantes pour lesquelles cela pourrait se produire ? J'ai vu cela à plus d'une occasion.
Re : Modification du titre de distribution en faisant correspondre WaferID avec By StatementJe prendrais la réinitialisation du titre en dehors du code initial pour générer les distributions, et changerais les titres après la génération du rapport de distribution

Voici un exemple basé sur votre script, mais modifié pour les exemples de données
Names Default To Here( 1 );
dt = Current Data Table();
batchids = Associative Array( dt:lot_id );
Dis = dt << Distribution(
Stack( 1 ),
Automatic Recalc( 1 ),
Continuous Distribution(
Column( :npn1 ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
Local Data Filter(
Close Outline( 1 ),
Add Filter( columns( :site ), Where( :site == 1 ) )
),
By( :Wafer )
);
For( i = 1, i <= N Items( Dis ), i++,
Report( dis[i] )[Outline Box( 1 )] <<
Set title(
Report( dis[i] )[Outline Box( 1 )] << get title || " Lots="
|| Char( batchids << get keys )
)
);
Remarque : j'ai fermé manuellement les sections Process Capability de la sortie pour une meilleure image