Controlla se il wafer da una stringa di input è contenuto all'interno di una tabella di datiHo una stringa di input dal basso:
For( i = 1, i <= N Rows( dtWaferIDList ), i++,
tempi = Column( dtWaferIDList, 1 )[i];
InputString = If( i == 1, "'", "" ) || InputString || tempi || If( i < N Rows( dtWaferIDList ), "','", "'" );
);
E un table1 che estraggo da un database. Vorrei verificare se (nella colonna Wafer della tabella 1) tutti i wafer della stringa di input sono contenuti in quella colonna.
- se tutti i wafer hanno dati: display message = "dati per tutti i wafer disponibili".
- in caso contrario: messaggio visualizzato = "nessun dato disponibile".
Grazie!
Tabella datiScriptingRe: Verificare se il wafer di una stringa di input è contenuto in una tabella di datiMolto probabilmente potresti usare l'array associativo per questo confronto Applicazioni per array associativi . Scopri la parte Confronta colonne in due diverse tabelle di dati
Re: Verificare se il wafer di una stringa di input è contenuto in una tabella di dati@jthi ti ha indicato la giusta direzione.Il tuo approccio proposto utilizza una stringa letterale molto lunga.Ti suggerisco di utilizzare array associativi o un elenco JMP.
Di seguito è riportato un semplice script che apre una tabella di dati che contiene wafer.Quindi crea una tabella di dati che ha un insieme casuale di wafer.Infine controlla se l'insieme casuale contiene tutti i wafer della prima tabella di dati.
names default to here(1);
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
unique wafers = associative array(dt:Wafer);
// Create a random wafer table and see if it contains all wafers
dtRand = new table("Random",
add rows(60),
new column("Rand Wafer", set each value(random integer(1,24)));
);
random wafers = associative array(dtRand:Rand wafer);
Random wafers << Intersect( unique wafers );
if(n items(Random wafers) == n items( unique wafers),
msg = "data for all wafers available",
msg = "no data available"
);
new window("Message", <<MODAL></MODAL>Re: Verificare se il wafer di una stringa di input è contenuto in una tabella di datiCiao Nelson,
Apprezzo l'aiuto! Sono ancora un po' nuovo in JMP e non ho ancora utilizzato gli array associativi. L'ho letto nella guida e nell'indice di scripting; ma continuo a fare un po' di confusione. Ecco dove mi trovo nel mio codice: (direttamente dopo aver aperto la tabella WaferRgDt da un database)
unique wafers = Associative Array( WaferRgDt:Wafer );
given wafers = Associative Array( dtWaferIDList:WaferList );
intersection = unique wafers; intersection << Intersect( given wafers); //intersection between arrays
//uncommmon2 represents wafers that have no data associated with it.
uncommon2 = given wafers; uncommon2 <<REMOVE></REMOVE>
Quando eseguo questo, ottengo una casella di messaggio vuota con un punto ... quindi qualcosa sembra ancora sbagliato. Mi chiedo se sia un problema di logica o di sintassi. Ho avuto qualche problema a trovare come scrivere le chiavi in una finestra di messaggio, se possibile. Spero di essere stato abbastanza chiaro. Grazie ancora!
Re: Verificare se il wafer di una stringa di input è contenuto in una tabella di datiPer convertire un elenco di stringhe in una stringa puoi usare Concat Items()
Names Default To Here(1);
aa = Associative Array({"bun",
"shoe",
"tree",
"door"}
);
uniqKeys = aa << get keys;
Show(uniqKeys);
Show(Concat Items(uniqKeys, ", "));
Re: Verificare se il wafer di una stringa di input è contenuto in una tabella di datiHo anche usato questo post di discussione per aiutare a scrivere il codice sopra Ri: Modo rapido per confrontare due elenchi (elementi non comuni)?