Trasferire dati tra tabelleCiao, sono in grado di estrarre una tabella SQL in un formato molto semplice. Una colonna ha un ID univoco (UID), un'altra colonna ha intestazioni di colonna e la terza ha un UID. Ho un'altra tabella in cui alcune celle hanno lo stesso UID. Voglio collegare i valori dalla prima tabella ("UID") alla seconda nuova tabella ("Nuovo").
Tabulare era lo strumento perfetto per ordinare le intestazioni delle colonne e darmi un conteggio delle righe, ma poiché la colonna UID contiene sia dati stringa che numerici, non sono in grado di popolare direttamente la tabella con i valori tramite tabulare, quindi inserisco l'UID per i valori nello strumento tabula. Questo almeno mi ha dato un modo per correlare quale valore appartiene a dove.
Se tabulare potesse popolare direttamente i valori effettivi (non sono necessarie statistiche) invece di dover cercare l'UID tra le tabelle, questo sarebbe l'ideale.
Scrivere uno pseudocodice è abbastanza semplice da mostrare cosa è necessario fare, ma con JSL non ho fortuna. Qualcuno può aiutare?

for( i = 1, i <= N Cols( data table( "New" ) ), i++, // col-by-col
for( j = 1, j <= N rows( data table( "New" ) ), j++, // row-by-row
if( isempty( column( data table( "New" ), i)[j] ), continue(), // if cell empty, move to next row
id_val = column( data table( "New" ), i)[j] &
id_loc = data table( "UID" ) << Get rows where( :UID == id_val) &
data table( "New" ):eval( column( data table( "New" ))[j] = data table( "UID" ):UID[ id_loc[1] ]
);
);
);
Grazie per il tuo tempo!
Personalizzazione di massafinestreRe: Trasferire dati tra tabelleCiao @StarfruitBob
forse il seguente può funzionare per te.
Names Default To Here( 1 );
dtnew = New Table( "new",
Add Rows( 3 ),
New Column( "Column 1", Character, "Nominal", Set Values( {"1", "4", ""} ) ),
New Column( "Column 2", Character, "Nominal", Set Values( {"", "3", ""} ) ),
New Column( "Column 3", Character, "Nominal", Set Values( {"", "5", "2"} ) )
);
dtuid = New Table( "uid",
Add Rows( 5 ),
New Column( "UID", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3, 4, 5] ) ),
New Column( "Val", Character, "Nominal", Set Values( {"apple", "12.3", "987", "abc", "3"} ) )
);
for (i=1, i<=ncols(dtnew), i++,
for ( ii=1, ii <=nrows (dtnew), ii++,
if ( Column (dtnew ,i)[ii] == "", continue (),
abc= num( ( (Column (dtnew ,i)[ii])));
Column (dtnew ,i)[ii] = char (dtuid:val[abc]);
)));
la sceneggiatura sembra molto innaturale.
facci sapere se funziona per la tua applicazione.
Re: Trasferire dati tra tabelleCiao @ron_horne ,
Column (dtnew ,i)[ii] = char (dtuid:val[abc])
La riga sopra non collega l'UUID trovato nelle celle di dt:New alla riga di dt:UID che ha il valore corrispondente in :UID e quindi usa quel numero di riga per salvare nella cella corrispondente in dt:New.Esiste un semplice comando in grado di trovare un numero di riga diverso da << Ottieni righe where( :UID == abc )? In tal caso, penso di poter partire da ciò che hai risposto sopra per completare questo script.
C'è un modo per fare in modo che la tabulazione si posizioni direttamente nei valori effettivi nelle celle, indipendentemente dal tipo di dati e dalla modellazione, senza statistiche?
Re: Trasferire dati tra tabelleRisolto! Invece di provare a farlo con JMP, ho appena chiesto a qualcuno di modificare la query SQL per farlo, il che è molto più semplice.