<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />i miei dati sono disposti in colonne come segue:
wafer #, N. log, ID DUT, Ora di test, parametro 1, parametro 2 ........
Ho una serie di specifiche che voglio applicare per identificare tutti i DUT che falliscono all'ora del test = 0. Una volta identificati questi DUT, voglio rimuovere tutte le istanze di quegli stessi DUT. Tuttavia, non voglio che lo stesso set di specifiche sia applicato a tutte le altre ore di dati di test.
Sono arrivato al punto di generare un'altra tabella nello stesso formato, con tutti i fallimenti t = 0 identificati. Ora voglio digitare il numero di registro, l'ID DUT e rimuovere tutte le istanze (tutte le successive ore di test) dei DUT non riusciti dalla tabella originale. Come lo faccio?
(Ecco una leggera variazione sull'approccio di Martin sopra).
In genere, se si dispone di limiti diversi per i valori in una singola colonna, è forse meglio dividere i dati in modo da poter memorizzare i limiti richiesti come proprietà della colonna. Ma se hai dei motivi per non farlo, l'approccio sotto è un modo per fare ciò che penso che tu voglia. Taglia e incolla il codice in una finestra dell'editor, quindi seleziona "Modifica> Esegui script". (I comandi 'Wait ()' sono così puoi vedere cosa sta succedendo).
NamesDefaultToHere ( 1 ) ;
// Tabella di esempio
dt =
Nuova tabella ( "DUT" ,
Aggiungi righe ( 12 ) ,
Nuova colonna ( "ID DUT" ,
Numerico ,
"Nominale" ,
Formato ( "Migliore" , 12 ) ,
Imposta valori ( [ 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 , 1 , 2 , 3 , 4 ] )
) ,
Nuova colonna ( "Ora del test" ,
Numerico ,
"Ordinale" ,
Formato ( "Migliore" , 12 ) ,
Imposta valori ( [ 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 ] )
) ,
Nuova colonna ( "P1" ,
Numerico ,
"Continuo" ,
Formato ( "Fisso dicembre" , 12 , 3 ) ,
Imposta valori (
[ 0,299525242746479 , 1,0633718409566 , 0,507859846881073 ,
- 1,11573907805173 , 0,222826061547355 , - 0,318546800557343 ,
- ,0356930503397689 , 0,661572077447882 , - 0,182884744578411 ,
- 0,930044642545168 , 0,767786562806245 , - 0,130135490980355 ]
)
) ,
Nuova colonna ( "P2" ,
Numerico ,
"Continuo" ,
Formato ( "Fisso dicembre" , 12 , 3 ) ,
Imposta valori (
[ 0,967955026618985 , - 1,05625737545624 , 0,399938006086842 ,
- ,0459988344031106 , - 1,30650202283731 , 1,66536579742163 ,
1,19669670020495 , - 0,205442597157623 , - 1,40714522703899 ,
0,517030195850593 , - ,51315580063705 , - 1,17294833449061 ]
)
)
) ;
// Supponiamo valori di "pi" <0.5 a "Hour of Test" = 0 definiscono un fallimento -
// Quindi seleziona le righe corrispondenti in dt:
Aspettare ( 1 ) ;
dt << clearSelect () ;
dt << selectWhere ( : p1 < 0.5 & : Ora di prova == 0 ) ;
// Seleziona la colonna 'DUT ID'
Aspettare ( 1 ) ;
Colonna ( dt , "ID DUT" ) << setSelected ( 1 ) ;
// 'Espandi' la selezione per comprendere tutte le righe associate a un DUT in errore
Aspettare ( 1 ) ;
dt << selectMatchingCells ;
// Deseleziona la colonna
Aspettare ( 1 ) ;
Colonna ( dt , "ID DUT" ) << setSelected ( 0 ) ;
// Elimina le righe
Aspettare ( 1 ) ;
dt << DeleteRows ;
[Modifica: aggiunta "Formula eval" per evitare problemi di calcolo in tempo reale.]
Ecco un frammento di codice che penso faccia quello che stai cercando:
dt = Tabella dati ( "Targetdt" ) ;
dt << Seleziona dove ( : Ora == 0 ) ;
SDT = dt << sottoinsieme ( righe selezionate ) ; // genera la tabella sottoinsieme per i dati alle ore = 0
minspec = 3 ; // le tue specifiche
SDT << Nuova colonna ( "INSPEC" , Formula ( : param1 > = minspec ), Formula Eval ) ; // vedi se questo dut è in spec secondo ore = 0 dati
dt << aggiornare (
Con ( SDT ) ,
Colonne corrispondenti ( : log # = : log # , : DUT_ID = : DUT_ID ) ,
Aggiungi colonne dalla tabella di aggiornamento ( : INSPEC )
) ;
dt << Seleziona dove ( : INSPEC == 0 ) ;
dt << Elimina righe () ;
La chiave è avere una colonna come "inspec" che aggiungi alla tua tabella originale usando "Aggiorna". Quindi puoi filtrare in base a quella colonna.