Utilizzare Loc ordinato per corrispondenza esatta tra le tabelle o un altro strumento?Un cliente è interessato a impostare una formula in una colonna simile a VLOOKUP (Excel). La funzione comporterebbe lo stesso output dell'utilizzo di Table Join, ma il cliente ha motivi legittimi per farlo con una formula anziché un join.
Ad esempio, la sua tabella di base potrebbe apparire così:

E la seconda tabella di riferimento potrebbe essere questa:

Possiamo assegnare questa formula alla colonna "Output" della tabella di base:
dtRefTable = Tabella dati ("RefTable");
KeyBracket = Loc Sorted (dtRefTable: Key << getvalues,: Key);
dtRefTable: SpecificInfo [KeyBracket];
Quando la formula viene eseguita, la tabella di base cambia in questo modo:

Il problema è che nella tabella di base, la chiave per la riga 2 è 2401. Non c'è corrispondenza per 2401 nella tabella di riferimento, quindi Loc Sorted arrotonda per difetto e seleziona il valore inferiore successivo di Key, che (in questo caso) è Key = 2400 e seleziona 111 per l'output.
Ciò che il cliente desidera è che quella cella (colonna Output, riga 2) sia "Mancante" o qualsiasi altro valore che possa essere identificato come "nessuna corrispondenza trovata" tramite un'istruzione condizionale. E ovviamente non è facile come dire "se Key = 2401 imposta la cella su Missing", poiché ci sono molte possibilità nei dati reali per le partite e le non partite.
S o il tavolo Base ideale sarebbe simile a:

Come lo realizziamo? Esiste un'altra funzione (anziché Loc Sorted) che potrebbe funzionare su tabelle come questa?
Grazie,
Jerry
Ri: Usa Loc ordinato per corrispondenza esatta tra le tabelle o un altro strumento?Bello! Grazie Brady e a tutti coloro che hanno risposto. Penso che il cliente sarà contento.
JSL continua a stupirmi con tutte le funzionalità disponibili. Non sapevo affatto della funzione "Prova" e non avevo usato "Come elenco". Molto bello e molto apprezzato!
Jerry
Ri: Usa Loc ordinato per corrispondenza esatta tra le tabelle o un altro strumento?Mi piace di più. Più corto e più elegante.
Ri: Usa Loc ordinato per corrispondenza esatta tra le tabelle o un altro strumento?
Ecco un'altra opzione.
dt = Data Table( "reftable" );
Try( dt:specificInfo[Loc( As List( dt:key << getvalues ), :Key )[1]], . );
Ri: Usa Loc ordinato per corrispondenza esatta tra le tabelle o un altro strumento?Dovrebbe funzionare fintanto che i valori nelle colonne Chiave sono numerici e hai impostato la variabile di riferimento della tabella. La referenza di colonna che hai avuto nel tuo esempio non sembra funzionare nelle formule di colonna.
KeyBracket = Loc(Column(dtRefTable,"Key") << getvalues == :Key);
If(N Row(KeyBracket > 0,
Column(dtRefTable,"SpecificInfo")[KeyBracket[1]],
.
);
Non sono sicuro di come mi sento con questo codice all'interno di una formula di tabella. Tuttavia, salva la fretta di eseguire il ciclo su tutti i valori chiave nella tabella di destinazione. Se i valori chiave sono caratteri, sostituisci "==" con una virgola nel comando Loc e cambia l'ordine degli argomenti.
Ri: Usa Loc ordinato per corrispondenza esatta tra le tabelle o un altro strumento?Sì, voglio dire, probabilmente potresti farlo con le formule ... Se ci sono problemi di controllo delle tabelle, quella che potrebbe essere una via migliore sarebbe qualcosa che coinvolge JMP Table Query Builder. Quindi potrebbero salvare un flusso di lavoro standardizzato come file QB e creare una tabella con funzionalità di aggiornamento. Il vantaggio QB è che il codice è già formattato e creato da JMP.Ri: Usa Loc ordinato per corrispondenza esatta tra le tabelle o un altro strumento?I join (regolari o virtuali) funzionano davvero e inizialmente li ho suggeriti al cliente. Tuttavia, hanno alcune esigenze interne (più persone che accedono a file di dati sicuri - non capisco tutti i dettagli) che richiedono loro di farlo con le formule anziché i join. Scusate!
Ri: Usa Loc ordinato per corrispondenza esatta tra le tabelle o un altro strumento?Questo è ciò che suggerirei anche io. Attenzione, non chiudere la tabella referenziata prima di salvare la tabella con le formule. Se lo fai, le formule verranno rimosse!
Ri: Usa Loc ordinato per corrispondenza esatta tra le tabelle o un altro strumento?Hai provato i join virtuali?
M