Transférer des données entre les tablesBonjour, je suis capable d'extraire une table SQL dans un format très simple. Une colonne a un ID unique (UID), une autre colonne a des en-têtes de colonne et la troisième a un UID. J'ai une autre table où certaines cellules ont le même UID. Je souhaite brancher les valeurs de la première table ("UID") à la deuxième nouvelle table ("Nouveau").
Tabulate était l'outil parfait pour trier les en-têtes de colonnes et me donner un nombre de lignes, mais comme la colonne UID contient à la fois des données de chaîne et des données numériques, je ne peux pas remplir directement le tableau avec les valeurs via tabulate, donc à la place j'ai mis l'UID pour les valeurs dans l'outil de tabulation. Cela m'a au moins donné un moyen de corréler quelle valeur appartient à où.
Si tabulate peut renseigner directement les valeurs réelles (aucune statistique nécessaire) au lieu de devoir rechercher l'UID entre les tables, ce serait idéal.
Écrire du pseudocode est assez simple pour montrer ce qui doit être fait, mais avec le JSL, je n'ai pas de chance. Quelqu'un peut-il m'aider ?

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] ]
);
);
);
Merci pour votre temps!
Personnalisation de masseles fenêtresRe : Transférer des données entre tablesSalut @StarfruitBob
peut-être que ce qui suit peut fonctionner pour vous.
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]);
)));
le script semble très naturel.
faites-nous savoir si cela fonctionne pour votre application.
Re : Transférer des données entre tablesBonjour @ron_horne ,
Column (dtnew ,i)[ii] = char (dtuid:val[abc])
La ligne ci-dessus ne lie pas l'UUID trouvé dans les cellules de dt:New à la ligne de dt:UID qui a la valeur correspondante dans :UID, puis utilise ce numéro de ligne pour enregistrer dans la cellule correspondante de dt:New.Existe-t-il une commande simple permettant de trouver un numéro de ligne autre que << Get rows where( :UID == abc ) ? Si c'est le cas, je pense que je peux m'appuyer sur ce que vous avez répondu ci-dessus pour compléter ce script.
Existe-t-il un moyen de créer directement un tableau dans les valeurs réelles des cellules, quel que soit le type de données et la modélisation, sans statistiques ?
Re : Transférer des données entre tablesRésolu ! Au lieu d'essayer de le faire avec JMP, j'ai juste demandé à quelqu'un de modifier la requête SQL pour le faire, ce qui est beaucoup plus facile.