Wie speichere ich Ergebnisse einer SQL-Abfrage in einer Datentabelle?Hallo zusammen,
Ich habe das folgende Problem. Ich möchte eine SQL-Abfrage ausführen, um Daten aus der Datenbank abzurufen, und das funktioniert gut. Danach würde ich die Daten aus der Abfrage in der Datentabelle speichern und diese für die weitere Verarbeitung verwenden. Basierend auf Ideen aus anderen Beiträgen habe ich eine einfache Zuweisung zur neuen Variablen vorgenommen dt_TestData . Ich gebe als Argument für die Datentabelle den Namen an, aus dem ich entnommen bin Abfragename. Allerdings tritt ein Fehler auf, wenn ich Daten in der neuen Variablen speichern möchte. Die Ausführung der Abfrage funktioniert gut und die neue Tabelle mit Namen Versuchsdaten öffnet sich automatisch, aber ich möchte auf diese Tabelle verweisen. Ich übersehe etwas und kann es nicht bemerken. Ich würde mich über Hilfe bei der Lösung dieses Problems freuen. Ich verwende JMP15. Noch eine Frage: Wie kann ich die Anzeige der Tabelle nach der Abfrageausführung deaktivieren? Mit freundlichen Grüßen.
Data = New SQL Query(
Connection(
"ODBC:Description=Datenbank;DRIVER=SQL Server;SERVER=Server;UID=%_UID_%;PWD=%_PWD_%;APP=JMP;DATABASE=EngineeringSupport;"
),
QueryName( "Experimental_Data" ),
Select(
Column( "Param1", "t1"),
Column( "Param2", "t1"),
Column( "Param3", "t1"),
),
From( Table( "TestData", Schema( "dbo" ), Alias( "t1" ))),
) << Run;
dt_TestData = Data Table("Experimental_Data");
Open(dt_TestData);
//further actions with dt_TestData: slicing, joining with other tables, etc.
Betreff: Wie speichere ich Ergebnisse einer SQL-Abfrage in einer Datentabelle?Das ist seltsam. Wenn ich eine Abfrage ausführe, kann ich von der Abfrage aus keine Nachrichten direkt an die Tabelle senden. Ich muss diese Tabelle zuerst in eine Datentabelle umwandeln. Siehe Beispiel unten. Verstehe ich etwas falsch?
Table = New SQL Query(
Version( 130 ),
Connection( "ODBC:DSN=yournamehere;" ), // OBS! needs to be present and carry correct name!
QueryName( "MyQuery" ),
Select(
Distinct,
Column( "A", "t1" ),
),
From(
Table(
"some table",
Schema( "some view" ),
Alias( "t1" )
),
Table(
"another table",
Schema( "another view" ),
Alias( "t2" ),
Join(
Type( Left Outer ),
EQ( Column( "BatchId", "t1" ), Column( "BatchId", "t2" ) )
)
)
)
) << Run;
// does not work
Close( Table, no save );
// does work
NewTable = Data Table( Table );
Close( NewTable, no save );
Betreff: Wie speichere ich Ergebnisse einer SQL-Abfrage in einer Datentabelle?Markbailey, danke für die Antwort. Ich wusste nicht, wie ich die Referenz per Skript erhalten kann, aber nach weiterer Suche habe ich hier die Lösung gefunden Post . Vielen Dank für Ihre Zeit und beste Grüße.
Betreff: Wie speichere ich Ergebnisse einer SQL-Abfrage in einer Datentabelle?Die Variable Daten speichert den Verweis auf die von der Abfrage zurückgegebene Datentabelle. Der Funktionsaufruf Datentabelle („Experimentelle Daten“) gibt einen Verweis auf die offene Datentabelle Experimental Data zurück. Sie können Nachrichten an die in gespeicherte Referenz senden Daten .
Betreff: Wie speichere ich Ergebnisse einer SQL-Abfrage in einer Datentabelle?gzmorgan0,
Danke für deine Antwort! Ich hätte das genauer erklären sollen. Das Problem besteht darin, dass ich keine „dt“-Variable erstellen konnte, die auf die aus der Abfrage resultierenden Daten verweist. Nachdem die Abfrage ausgeführt wurde, wird die neue Tabelle erstellt und geöffnet. Wo kann ich jedoch die Variable finden (oder erstellen), die auf die Daten verweist? Oder ist es irgendwie erstellt und ich kann das nicht sehen/verwenden? JMP zeigt einen Fehler bezüglich dieser Zeile an:
dt_TestData = Datentabelle("Experimental_Data");
„Die Datentabelle kann beim Zugriff auf oder beim Auswerten der Datentabelle, Datentabelle/*###*/(„Experimental_Data“)“ nicht gefunden werden.“
Ich denke, die Variable dt_TestData kann so nicht erstellt werden? Ich würde mich über weitere Hilfe zur Lösung des Problems freuen.
Betreff: Wie speichere ich Ergebnisse einer SQL-Abfrage in einer Datentabelle?@lukasz ,
Die letzte JSL-Anweisung ist das Problem: Open( dt_testData ).Wenn die Abfrage erfolgreich ausgeführt wurde, ist die Datentabelle bereits geöffnet. Wenn Sie eine weitere Kopie dieser Tabelle erstellen möchten, verwenden Sie Subset. Im Beispiel unten ist dt2 eine andere Tabelle.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = dt << Subset( All Rows, Selected Columns(0), Output Table Name("Big2") );