Ziehen Sie Daten mit SQL und JMP-String im JSL-SkriptHallo zusammen.
Ich greife über ein JSL-Skript mit SQL auf eine bestimmte Datenbank zu.
Um die gewünschten Daten abzurufen, muss ich eine Spezifikation bereitstellen.
Die Spezifikation erfolgt in Form einer Liste oder Matrix in JMP/JSL.
Wenn ich die Namen der einzelnen Elemente manuell eingebe, funktioniert es. =>
/* Fetch Single Items from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('A','B','C','D')");Da es sich jedoch um Tausende von Elementen handeln kann, muss ich eine Möglichkeit finden, einen einzelnen Namen zu verwenden, der eine Liste (oder eine Matrix) der Elemente darstellt.
So etwas funktioniert natürlich nicht. =>
/* Fetch Data from Data Table*/
Items_M = :Items << get as matrix();
/* Fetch Data from Database*/
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN ('^Items_M^')");Was ist der am einfachsten Wie geht das?
Danke schön!
DatenzugriffBetreff: Daten mit SQL und JMP-String im JSL-Skript abrufenDanke!
Das funktioniert auch. Und es ist sehr nützlich!
Am besten,
Valerio
Betreff: Daten mit SQL und JMP-String im JSL-Skript abrufenIch habe das Beispiel geändert, um es zu verwenden Concat-Elemente Funktion, die die Aufgabe übernimmt, eine Liste in eine durch Kommas getrennte Zeichenfolge umzuwandeln. Ihr Code verwendet ^^, was die clevere Art ist, eine Einfügung durchzuführen, aber nur in Verbindung mit funktioniert Evaluierungseinlage Funktion.
Betreff: Daten mit SQL und JMP-String im JSL-Skript abrufenSo mache ich es normalerweise:
- Erstellen einer eindeutigen Liste von Spaltenwerten
- Einspeisung dieser Liste in eine SQL
- Daten aus der Datenbank in eine neue Tabelle zurückholen
Bisher kenne ich den einfachsten Weg, diese Aufgabe auszuführen, und ich verwende ihn häufig.
Ich habe dies in meiner Speisekarte implementiert, um es schnell zur Hand zu haben.
// take unique values from the column :items
dt = open("$SAMPLE_DATA\Big Class.jmp");
summarize( Current Data Table(), item_lst = by( :NAME /* :item */ ) );
// show list
show(item_lst);
// prepare list for sql
item_lst_str=substitute (char(item_lst),"{","(","}",")","\!"","'");
// open SQL Query with inserted item_lst
New SQL Query(
Connection(
"ODBC:DSN=DSN_NAME;UID=user;DBQ=database;" // connection string to be modified
),
QueryName( "ITEMS_Query" ),
CustomSQL( eval insert("SELECT * from database_table dt where dt.item in ^item_lst_str^;") )
) << modify;
// or directly run if neccessary
// ) << Run;Betreff: Daten mit SQL und JMP-String im JSL-Skript abrufenVielen Dank!
Das ist es, wonach ich gesucht habe ... Am Wochenende funktionierte es nicht, da ich einen instabilen Zugriff auf die Datenbank hatte.
Danke noch einmal.
Betreff: Daten mit SQL und JMP-String im JSL-Skript abrufenIch kann nicht sagen, was ist am einfachsten , aber so mache ich es:
// for test purposes
lstItems = {"A","B","C","D"};
// build a comma separated list
strItems = ConcatItems(lstItems,",");
/* Fetch Data from Database*/
eval(parse(evalinsert("\[
A = Open Database("Server Specs", "SELECT * FROM CertainFolder a WHERE a.CertainColumn IN (^strItems^)")
]\")));;