SAS-Code unter Linux ausführen

Die meisten Antworten auf diese Frage setzen voraus, dass Sie SAS bereits haben und es nur headless wollen. Diese hier ist für den anderen Fall: Die Programme existieren, die Lizenz nicht, und der Job muss heute Nacht trotzdem auf dem Server laufen.

Die kurze Antwort

Jenner ist eine einzelne Binärdatei. Legen Sie sie auf den Server, richten Sie sie auf eine .sas-Datei, und sie läuft — ohne GUI, ohne Display, ohne erreichbaren Lizenzserver und ohne etwas, das beim Start ausgecheckt werden müsste. Sie beendet sich mit einem Wert ungleich null, wenn das Programm fehlschlägt, und genau das interessiert einen Scheduler. Wenn Sie noch vergleichen: Die Fragen unten nennen jeden Weg, den ein Linux-Anwender hat, auch die, die nicht wir sind.

Gebaut für die Art, wie Linux-Arbeit wirklich ausgeführt wird

Rufen Sie sie aus cron auf, aus einem systemd-Timer, aus einer Airflow-Task, aus einem GitHub-Actions-Job oder aus einem Container. Sie liest von stdin und schreibt nach stdout und in eine Logdatei, komponiert also mit den Werkzeugen, die ohnehin auf der Maschine liegen, statt eine Sitzung zu verlangen.

Was unter Linux läuft

Jenner ist SAS-kompatibel: die Sprache, in der Ihre Programme bereits geschrieben sind, ausgeführt auf dem Server mit denselben Anweisungs- und Optionsnamen wie heute.

DATA-Steps, PROC SQL und Makros

Der Kern der Sprache läuft wie geschrieben — DATA-Step-Logik, Arrays, Formate und Informate, die Makro-Funktionalität und PROC SQL. Code gegen SAS-9.4-Syntax braucht keinen Portierungsschritt.

100 Prozeduren

Regression und lineare Modelle, Überlebenszeitanalyse, multivariate Verfahren und Clustering, Zeitreihen, Qualitätskontrolle, Zusammenfassung und Reporting. Jede Prozedur hat eine veröffentlichte Referenzseite, sodass die Abhängigkeiten eines geplanten Jobs geprüft werden können, bevor er eingeplant wird.

Die Dateien, die schon auf dem Server liegen

Jenner liest und schreibt SAS7BDAT und XPT direkt, daneben CSV und Parquet. Datensätze auf einem eingehängten Volume oder in einem Objektspeicher müssen nicht konvertiert werden, und Ausgaben lassen sich in dem Format zurückschreiben, das der nachgelagerte Job erwartet.

Dasselbe Programm, das die Analystin geschrieben hat

Derselbe Quellcode läuft unter Linux, macOS und Windows. Ein auf einem Laptop entwickeltes Programm läuft hier unverändert als geplanter Job, was die Neuschreibung entfernt, die sonst zwischen Analyse und Produktion steht.

Ergebnisse, die Sie belegen können

Jenner besteht alle 58 Datensätze des NIST-Statistical-Reference-Datasets-Benchmarks, der üblichen unabhängigen Genauigkeitssuite für statistische Software. Die Prozedurreferenz ist vollständig veröffentlicht, sodass die Aussage, eine bestimmte PROC werde unterstützt, überprüfbar ist, bevor sie in eine Pipeline kommt.

Häufige Fragen

Installieren Sie die Jenner-Binärdatei und führen Sie sie gegen die Datei aus. Es ist eine unabhängige Implementierung der SAS-Sprache und führt .sas-Programme direkt unter Linux aus, ohne vorhandenes SAS und ohne SAS-Lizenz. Es wird nichts vorher konvertiert.

Ja. Linux ist eine für SAS 9.4 unterstützte Plattform, das ist also kein Plattformproblem wie bei Apple silicon. Das Hindernis ist die Lizenz, und auf einem Server meist zusätzlich der Lizenzserver: Eine Maschine, die ihn nicht erreicht, läuft nicht.

Ja. Es gibt keine GUI und nichts, das ein Display möchte. Es ist ein gewöhnliches Kommandozeilenprogramm, und genau das macht es auf einer Maschine brauchbar, die Sie nur über SSH erreichen.

Nein. Jenner ist eine Clean-Room-Implementierung der SAS-Sprache und bettet keine SAS-Software ein, kapselt sie nicht und ruft sie nicht auf. Es gibt keine Lizenz zu verlängern und keinen Lizenzserver, an dem der Job um zwei Uhr nachts scheitern könnte.

Kopieren Sie die Binärdatei ins Image und rufen Sie sie als Entrypoint oder aus Ihrem eigenen Skript auf. Sie braucht keinen Daemon, kein Display und keinen Netzwerkaufruf zum Start, sodass ein Container, der sie ausführt, so klein und reproduzierbar ist wie das gewählte Basis-Image.

Ja, und das ist ein häufiger Grund, hier zu landen. Weil es eine Binärdatei mit aussagekräftigem Exit-Code ist, kann ein CI-Job ein .sas-Programm als Build-Schritt ausführen und die Pipeline scheitern lassen, wenn das Programm scheitert. Planung per cron, systemd-Timer oder Airflow funktioniert genauso.

Ja. Ein fehlschlagendes Programm beendet sich mit einem Wert ungleich null, sodass die cron-Mail, eine systemd-Unit oder ein Pipeline-Schritt den Fehler sieht statt eines sauberen Laufs mit einem im Log vergrabenen Fehler. Das lohnt sich bei allem zu prüfen, was Sie einführen: ein Log voller roter Zeilen und ein Exit-Code von null ist genau die Art, wie nächtliche Fehler unsichtbar bleiben.

Das ist die Absicht. Derselbe Quellcode läuft unter Linux, macOS und Windows, die Datei der Analystin und die des geplanten Jobs sind also dieselbe Datei. Die Abdeckung ist nicht die gesamte Sprache; der ehrliche Weg, das für Ihren Code zu bestätigen, ist, ihn an beiden Stellen auszuführen und die Logs zu vergleichen.

Altair SLC führt ebenfalls Programme in SAS-Sprache ohne SAS-Lizenz aus, auch unter Linux, und tut das weit länger als wir. Für eine Serverlandschaft, in der der Grenzfall eines anderen längst aufgetreten und behoben wurde, ist dieser Erfahrungsvorsprung echtes Geld wert. Vergleichen Sie beide. Siemens verkauft es inzwischen als Rapidminer SLC, suchen Sie also unter beiden Namen.

Oft ist das richtig, und auf einem Server ist es verlockender als anderswo, weil das umgebende Werkzeug ohnehin Python ist. Ist der SAS-Code klein, oder verlässt das Team SAS ohnehin, dann schreiben Sie ihn neu. Für das Ausführen im Ist-Zustand spricht am meisten, wenn es viel davon gibt, er validiert ist und ein Neuschreiben eine erneute Validierung bedeutet, nicht nur ein erneutes Codieren.

Führen Sie Ihre SAS-Programme auf Ihren Linux-Servern aus

Eine Binärdatei, kein Lizenzserver und ein Exit-Code, dem Ihr Scheduler trauen kann.

Kostenlos testen