Ich benutze PC sas 9.4. Aber der Server läuft unter Linux. Anstatt also mein Programm im Stapel auf dem Server laufen zu lassen, habe ich ein kleines Skript, das ich am Anfang meines Programms benutze, das eine Remote-Engine verwendet, um eine Verbindung herzustellen. Ich ordne auch einen libname zu und führe meine Datasteps aus, die permanente Datensätze erzeugen. Allerdings, wenn ich dies tue, läuft mein Programm für 6 Stunden, aber wenn ich das Programm ohne libname ausführen, was bedeutet, dass die Datensätze in meinem Arbeitsverzeichnis generiert werden, läuft das gleiche Programm in 10 Minuten. Niemand scheint zu wissen, warum das so ist, und mir wurde gesagt, ich solle meinen Code direkt auf dem Unix-Server laufen lassen. Ich mag nicht das Aussehen von sas unter Unix, und mit Unix-Editoren, Speichern von .as-Dateien, um sie auszuführen. Ich bevorzuge die Verwendung der sas windows GUI. Warum gibt es so einen Unterschied in der Laufzeit? Vielen Dank im Voraus.sas Laufzeitunterschied
Antwort
Da Sie nicht rsubmit;
verwenden, arbeiten Sie tatsächlich nicht auf dem Server, nur Ihre Daten werden auf dem Server gespeichert. Sie laden die Daten vom Server auf Ihren PC herunter, bevor Sie Berechnungen durchführen. Abhängig von Ihrem Netzwerk dauert dies einige Zeit.
Versuchen Sie folgendes:
rsubmit XXX_server_name;
... Your Code ...
endrsubmit;
diese Weise können Sie auf dem Server arbeiten werden, nicht nur Daten in einer Bibliothek auf dem Server verwenden.
Ich habe versucht, aber eine Fehlermeldung erhalten, dass die Datei, von der ich versuche zu lesen, nicht existiert, aber es tut, weil ich in mein Arbeitsverzeichnis kopiert habe, bevor ich das Programm mit dem rsubmit Servernamen an der Spitze und schloss das Programm mit endsubmit; – user601828
Haben Sie es in das Remote-Arbeitsverzeichnis kopiert? Könnten Sie Ihre ursprüngliche Frage bearbeiten, indem Sie den von Ihnen ausprobierten Code einfügen? – Jetzler
@Jetzler anstatt die ursprüngliche Frage zu bearbeiten, denkst du nicht, dass es besser als neue separate Frage gepostet werden könnte? Ansonsten stopfen wir eine zweite separate Frage in die erste. –
Verbinden Sie sich einfach über die Bibliothek mit dem Server oder senden Sie Ihren Code tatsächlich über die Anweisung 'rsubmit;'? – Jetzler
% Let srv = XXX_server_name; % lassen cnsrv = & srv 7541; Optionen comamid = tcp remote = cntsrv; signon passwort = _prompt_; laufen; – user601828
Das ist, was ich benutze, um mich anzumelden. Dann erstelle ich einen libname, der auf einen Ort auf dem Unix-Server zeigt. Dann schreibe ich meinen Code und benutze das sas run-Icon, um zu senden, nicht rsubmit. Wenn ich also meinen Datensatznamen nicht mit dem Aliasname libname voranstelle, läuft das Programm in 10 Minuten, aber wenn ich mit dem Aliasnamen libname vorangestellt bin, sagen wir so, mylibname.results, läuft es 6 Stunden lang. – user601828