Übertragen von Daten zwischen TabellenHallo, ich kann eine SQL-Tabelle in einem sehr einfachen Format abrufen. Eine Spalte hat eine eindeutige ID (UID), eine andere Spalte hat Spaltenüberschriften und die dritte hat eine UID. Ich habe eine andere Tabelle, in der bestimmte Zellen dieselbe UID haben. Ich möchte die Werte aus der ersten Tabelle („UID“) in die zweite, neue Tabelle („Neu“) einfügen.
Tabulate war das perfekte Tool, um die Spaltenüberschriften zu sortieren und mir die Zeilenanzahl zu geben, aber da die UID-Spalte sowohl Zeichenfolgen- als auch numerische Daten enthält, kann ich die Tabelle nicht direkt über Tabulate mit den Werten füllen. Also habe ich stattdessen die UID für die Werte im Tabulate-Tool eingegeben. Dadurch konnte ich zumindest korrelieren, welcher Wert wohin gehört.
Wenn Tabulate die tatsächlichen Werte direkt auffüllen kann (keine Statistiken erforderlich), anstatt zwischen Tabellen nach der UID suchen zu müssen, wäre dies ideal.
Das Schreiben von Pseudocode ist einfach genug, um zu zeigen, was getan werden muss, aber mit dem JSL habe ich kein Glück. Kann jemand helfen?

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] ]
);
);
);
Vielen Dank für Ihre Zeit!
MassenanpassungWindowsBetreff: Daten zwischen Tabellen übertragenHi @StarfruitBob
vielleicht kann das folgende für Sie funktionieren.
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]);
)));
Das Scripting fühlt sich sehr unnatürlich an.
Lassen Sie uns wissen, ob es für Ihre Anwendung funktioniert.
Betreff: Daten zwischen Tabellen übertragenHallo @ron_horne ,
Column (dtnew ,i)[ii] = char (dtuid:val[abc])
Die obige Zeile verknüpft die in den Zellen von dt:New gefundene UUID nicht mit der Zeile von dt:UID, die den entsprechenden Wert in :UID hat, und verwendet dann diese Zeilennummer, um sie in der entsprechenden Zelle in dt:New zu speichern.Gibt es einen einfachen Befehl, der eine andere Zeilennummer als << Get rows where( :UID == abc ) finden kann? Wenn ja, denke ich, dass ich auf dem aufbauen kann, was Sie oben geantwortet haben, um dieses Skript zu vervollständigen.
Gibt es eine Möglichkeit, die tatsächlichen Werte in den Zellen direkt tabellarisch darzustellen, unabhängig von Datentyp und Modellierung, ohne Statistiken?
Betreff: Daten zwischen Tabellen übertragenGelöst! Anstatt dies mit JMP zu versuchen, habe ich einfach jemanden gebeten, die SQL-Abfrage zu ändern, um dies zu tun, was viel einfacher ist.