Modifica del titolo di distribuzione abbinando WaferID con By StatementCiao,
Vorrei modificare il titolo dei miei grafici di distribuzione per renderlo un po' più descrittivo e più facile da abbinare a un altro grafico che ho creato. Vorrei che il titolo di ciascun grafico fosse "Wafer = XYZ..., BatchID = ABC..."

Il codice che ho creato di seguito mi consente di modificare il titolo, tuttavia, non sorprende che elenchi tutti i batchid elencati nell'array associativo creato in precedenza. (questo array elenca solo tutti i batchID in una colonna di una tabella che ho). Quello che vorrei fare è abbinare il Wafer al BatchID e visualizzarlo nel titolo di ciascun grafico con un'istruzione By. C'è un modo per fare questo? Grazie!
//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 )
)}
)
)
);Personalizzazione di massaRe: Modifica del titolo di distribuzione abbinando WaferID w/By Statementapparentemente, la tua versione di JMP restituisce uno scaler quando viene restituito un solo valore.Re: Modifica del titolo di distribuzione abbinando WaferID w/By StatementSto eseguendo JMP 14.
Stranamente lo script viene eseguito correttamente quando rimuovo [1] da questa riga di codice. Lasciando tutto il resto uguale.
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))[1]];
Modificato per essere:
thelot = dtLookup:lot_id[(dtLookup << get rows where(:wafer == theWafer))];
Grazie ancora per il vostro aiuto!
Re: Modifica del titolo di distribuzione abbinando WaferID w/By StatementIl mio errore sul mio script di esempio.Vedi sotto per utilizzare la tabella dei dati di esempio che stavo usando.
Quale versione di JMP stai utilizzando?
Nel mio programma di esempio che ho fornito, cambia la linea
dt = current data table();
A
dt = open("$sample_data/semiconductor capability.jmp");
e quindi eseguire lo script.Dovrebbe funzionare senza errori.
Re: Modifica del titolo di distribuzione abbinando WaferID w/By StatementInsomma no. Non riesco a farlo funzionare con il tavolo di cui ho bisogno. Da quello che posso dire anche se ha senso e dovrebbe funzionare. L'errore che ho inviato nel mio ultimo messaggio (mi dispiace non averti visto rispondere) è quello che continua a comparire. L'unica cosa che non ho capito è il [1] alla fine di questa riga:
theLot = AllTheBatchIDs:BatchID[(AllTheBatchIDs << get rows where( :Wafer == theWafer ))[1]];
Che cosa fa? Eventuali suggerimenti?
Re: Modifica del titolo di distribuzione abbinando WaferID w/By Statementpedice non valido (deve essere un numero o un elenco di numeri){1} nell'accesso o nella valutazione di....
messaggio di errore per "theLot"Re: Modifica del titolo di distribuzione abbinando WaferID w/By StatementL'esempio che ho fornito nella mia ultima risposta funziona per te? Questo deve essere il punto di partenza.Oggetto: modifica del titolo di distribuzione abbinando WaferID w/By StatementCiao xnelson! Grazie ancora per una risposta rapida e una soluzione fantastica.
Ho ancora problemi con la mia tabella di ricerca. Sembra che "theWafer" venga trovato correttamente, tuttavia quando lo eseguo nel debugger "theLot" non viene popolato. Hai avuto problemi con questo? In allegato è il mio codice esatto. Le mie intestazioni sembrano "Distributions Wafer = ABC123, BatchID =".
BatchIDs = tabella di ricerca per riferimento
| ID batch | Wafer |
| 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)
)
);
Grazie per l'aiuto!
Re: Modifica del titolo di distribuzione abbinando WaferID w/By StatementÈ semplice rimuovere il valore del wafer da Outline Box() per la distribuzione, quindi eseguire una ricerca dalla tabella dei dati di ricerca e ottenere il BatchID o, nel caso del mio esempio, ottenere il Lot_id, e poi per aggiungerlo al titolo di 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: Modifica del titolo di distribuzione abbinando WaferID w/By StatementCiao xnelson,
Grazie ancora per una rapida risposta. Questo si sta avvicinando a quello che voglio, tranne che per ogni Wafer dovrebbe essere visualizzato solo 1 BatchID, non tutti. Forse guardare una tabella di esempio avrà più senso.
Voglio che i titoli dei miei grafici di distribuzione siano "Distribution Wafer = A, BatchID = X" e "Distribution Wafer = B, BatchID = X" ecc. Tuttavia, non capisco bene i mezzi con cui posso essere sicuro di esserlo abbinando il Wafer al BatchID corretto. (o come abbinarli affatto per quella materia)
Nota: ho una tabella che abbina ogni Wafer al suo BatchID già disponibile.
| ID batch | Wafer |
| X | UN |
| X | B |
| X | C |
| Y | D |
Y | E |
| Y | F |
| z | G |
| z | H |
| z | IO |
Un'altra domanda secondaria che avevo era: per il codice che hai appena inviato, sembra che aggiorni tutti i titoli dei miei grafici tranne il mio primo nell'istruzione By. Conosci i motivi comuni per cui ciò potrebbe accadere? L'ho visto in più di un'occasione.
Oggetto: modifica del titolo di distribuzione abbinando WaferID w/By StatementPrenderei il ripristino del titolo al di fuori del codice iniziale per generare le distribuzioni e cambierei i titoli dopo la generazione del rapporto di distribuzione

Ecco un esempio basato sul tuo script, ma modificato in base ai dati di esempio
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 )
)
);
Nota: ho chiuso manualmente le sezioni Capacità di processo dell'output per un'immagine migliore