Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungHallo,
Ich möchte den Titel meiner Verteilungsdiagramme bearbeiten, um ihn etwas aussagekräftiger zu gestalten und ihn leichter mit einem anderen Diagramm, das ich erstellt habe, in Einklang zu bringen. Ich möchte, dass der Titel jedes Diagramms „Wafer = XYZ..., BatchID = ABC...“ lautet.

Mit dem Code, den ich unten erstellt habe, kann ich den Titel bearbeiten. Es überrascht jedoch nicht, dass er alle Batch-IDs auflistet, die in dem zuvor erstellten assoziativen Array aufgeführt waren. (Dieses Array listet nur alle Batch-IDs in einer Spalte einer Tabelle auf, die ich habe). Was ich tun möchte, ist , den Wafer mit der BatchID abzugleichen und ihn im Titel jedes Diagramms mit einer By-Anweisung anzuzeigen. Gibt es eine Möglichkeit, dies zu tun? Danke schön!
//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 )
)}
)
)
);MassenanpassungBetreff: Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungAnscheinend gibt Ihre Version von JMP einen Scaler zurück, wenn nur ein Wert zurückgegeben wird.Betreff: Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungIch verwende JMP 14.
Seltsamerweise läuft das Skript korrekt, wenn ich die [1] aus dieser Codezeile entferne. Alles andere gleich lassen.
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))[1]];
Geändert zu werden:
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))];
Danke nochmal für deine Hilfe!
Betreff: Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungMein Fehler in meinem Beispielskript.Siehe unten, um die von mir verwendete Beispieldatentabelle zu verwenden.
Welche Version von JMP verwenden Sie?
Ändern Sie in meinem Beispielprogramm, das ich bereitgestellt habe, die Zeile
dt = current data table();
Zu
dt = open("$sample_data/semiconductor capability.jmp");
und führen Sie dann das Skript aus.Es sollte ohne Fehler funktionieren.
Betreff: Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungKurz gesagt nein. Ich kann es nicht dazu bringen, mit der Tabelle zu arbeiten, die ich brauche. Soweit ich das beurteilen kann, macht es Sinn und sollte funktionieren. Der Fehler, den ich in meiner letzten Nachricht gesendet habe (sorry, ich habe nicht gesehen, dass Sie geantwortet haben), wird immer wieder angezeigt. Das einzige, was ich nicht ganz verstanden habe, ist die [1] am Ende dieser Zeile:
theLot = AllTheBatchIDs:BatchID[(AllTheBatchIDs << get rows where( :Wafer == theWafer ))[1]];
was tut es? Irgendwelche Vorschläge?
Betreff: Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungUngültiger Index (muss Zahl oder Liste von Zahlen sein){1} beim Zugriff oder Auswertung von....
Fehlermeldung für "theLot"Betreff: Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungFunktioniert das Beispiel, das ich in meiner letzten Antwort gegeben habe, für Sie? Das muss der Ausgangspunkt sein.Betreff: Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungHallo Txnelson! Nochmals vielen Dank für die schnelle Antwort und die tolle Lösung.
Ich habe immer noch Probleme mit meiner Nachschlagetabelle. Es scheint, dass "theWafer" korrekt gefunden wird, aber wenn ich es im Debugger ausführe, wird "theLot" nicht gefüllt. Hatten Sie irgendwelche Probleme damit? Anbei mein genauer Code. Meine Kopfzeilen sehen so aus: „Distributions Wafer = ABC123, BatchID = .“
BatchIDs = Nachschlagetabelle als Referenz
| Batch-ID | Waffel |
| QQQ1234 | ABC-123 |
| YYY1234 | 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)
)
);
Danke für die Hilfe!
Betreff: Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungEs ist einfach, den Waferwert aus der Outline Box() für die Distribution zu entfernen und dann eine Suche in der Lookup-Datentabelle durchzuführen und die BatchID abzurufen, oder in meinem Beispiel die Lot_id abzurufen, und dann zum Titel der Outline Box() hinzuzufügen.

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)
)
);Betreff: Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungHallo Txnelson,
Nochmals vielen Dank für eine schnelle Antwort. Dies kommt dem, was ich möchte, näher, außer dass für jeden Wafer nur 1 BatchID angezeigt werden sollte, nicht alle. Vielleicht ist es sinnvoller, sich eine Beispieltabelle anzusehen.
Ich möchte, dass die Titel meiner Verteilungsdiagramme "Distribution Wafer = A, BatchID = X" und "Distribution Wafer = B, BatchID = X" usw. lauten. Ich verstehe jedoch nicht ganz, wie ich sicher sein kann, dass ich es bin Abgleich des Wafers mit der richtigen BatchID. (oder wie man sie überhaupt zusammenbringt)
Hinweis: Ich habe eine Tabelle, die jeden Wafer mit seiner bereits verfügbaren BatchID abgleicht.
| Batch-ID | Waffel |
| X | A |
| X | B |
| X | C |
| Y | D |
Y | E |
| Y | F |
| Z | G |
| Z | H |
| Z | ICH |
Eine weitere Nebenfrage, die ich hatte, war: Für den Code, den Sie gerade gesendet haben, sieht es so aus, als würde er alle Titel meiner Diagramme außer meinem ersten in der By-Anweisung aktualisieren. Kennen Sie häufige Gründe, warum dies auftreten könnte? Ich habe das mehr als einmal gesehen.
Re: Bearbeiten des Verteilungstitels durch Abgleichen von WaferID mit By-AnweisungIch würde das Zurücksetzen des Titels außerhalb des ursprünglichen Codes nehmen, um die Verteilungen zu generieren, und die Titel ändern, nachdem der Verteilungsbericht generiert wurde

Hier ist ein Beispiel, das auf Ihrem Skript basiert, aber an die Beispieldaten angepasst wurde
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 )
)
);
Hinweis: Ich habe die Abschnitte zur Prozessfähigkeit der Ausgabe manuell geschlossen, um ein besseres Bild zu erhalten