Hoe je SAS-code op Linux draait

De meeste antwoorden op deze vraag gaan ervan uit dat je SAS al hebt en het alleen headless wilt. Dit antwoord is voor het andere geval: de programma's bestaan, de licentie niet, en de job moet vanavond toch op de server draaien.

Het korte antwoord

Jenner is één binary. Zet hem op de server, wijs hem naar een .sas-bestand en hij draait — geen GUI, geen display, geen licentieserver om te bereiken en niets om bij het starten uit te checken. Hij eindigt met een waarde ongelijk aan nul als het programma faalt, en dat is het deel waar een scheduler echt om geeft. Weeg je nog af: de vragen hieronder noemen elke route die een Linux-gebruiker heeft, ook die welke niet wij zijn.

Gebouwd voor hoe Linux-werk echt wordt uitgevoerd

Roep hem aan vanuit cron, vanuit een systemd-timer, vanuit een Airflow-taak, vanuit een GitHub Actions-job of van binnen een container. Hij leest van stdin en schrijft naar stdout en een logbestand, dus hij componeert met het gereedschap dat al op de machine staat in plaats van om een sessie te vragen.

Wat er op Linux draait

Jenner is SAS-compatibel: de taal waarin je programma's al geschreven zijn, draaiend op de server met dezelfde statement- en optienamen die je nu gebruikt.

DATA-stappen, PROC SQL en macro's

De kern van de taal draait zoals geschreven — DATA-staplogica, arrays, formats en informats, de macrofaciliteit en PROC SQL. Code geschreven tegen SAS 9.4-syntaxis heeft geen portingstap nodig.

100 procedures

Regressie en lineaire modellen, overlevingsanalyse, multivariate methoden en clustering, tijdreeksen, kwaliteitscontrole, samenvatting en rapportage. Elke procedure heeft een gepubliceerde referentiepagina, zodat de afhankelijkheden van een geplande job gecontroleerd kunnen worden voordat die wordt ingepland.

De bestanden die al op de server staan

Jenner leest en schrijft SAS7BDAT en XPT rechtstreeks, naast CSV en Parquet. Datasets op een gekoppeld volume of in een objectopslag hoeven niet geconverteerd te worden, en uitvoer kan worden weggeschreven in het formaat dat de volgende job verwacht.

Hetzelfde programma dat de analist schreef

Dezelfde broncode draait op Linux, macOS en Windows. Een programma dat op iemands laptop is ontwikkeld, draait hier onveranderd als geplande job, wat de herschrijving wegneemt die normaal tussen analyse en productie zit.

Resultaten die je kunt aantonen

Jenner slaagt voor alle 58 datasets van de NIST Statistical Reference Datasets-benchmark, de gangbare onafhankelijke nauwkeurigheidssuite voor statistische software. De procedurereferentie is volledig gepubliceerd, dus de bewering dat een specifieke PROC wordt ondersteund is controleerbaar voordat je die in een pipeline zet.

Veelgestelde vragen

Installeer de Jenner-binary en draai hem tegen het bestand. Het is een onafhankelijke implementatie van de SAS-taal en voert .sas-programma's rechtstreeks uit op Linux zonder dat SAS aanwezig is en zonder SAS-licentie. Er wordt vooraf niets geconverteerd.

Ja. Linux is een ondersteund platform voor SAS 9.4, dus dit is geen platformprobleem zoals Apple silicon dat is. De hindernis is de licentie, en op een server meestal ook de licentieserver: een machine die die niet kan bereiken, draait niet.

Ja. Er is geen GUI en niets dat een display wil. Het is een gewoon opdrachtregelprogramma, en dat is wat het bruikbaar maakt op een machine die je alleen via SSH bereikt.

Nee. Jenner is een clean-room-implementatie van de SAS-taal en bevat, omhult of roept geen SAS-software aan. Er is geen licentie om te verlengen en geen licentieserver waartegen de job om twee uur 's nachts kan falen.

Kopieer de binary in het image en roep hem aan als entrypoint of vanuit je eigen script. Hij heeft geen daemon, display of netwerkaanroep nodig om te starten, dus een container die hem draait is zo klein en reproduceerbaar als het basisimage dat je koos.

Ja, en dat is een veelvoorkomende reden om hier te belanden. Omdat het één binary met een betekenisvolle exitcode is, kan een CI-job een .sas-programma als buildstap draaien en de pipeline laten falen als het programma faalt. Plannen vanuit cron, een systemd-timer of Airflow werkt net zo.

Ja. Een falend programma eindigt met een waarde ongelijk aan nul, zodat cron-mail, een systemd-unit of een pipelinestap de fout ziet in plaats van een schone run met een fout begraven in het log. Dat is het controleren waard bij alles wat je invoert: een log vol rood en een exitcode van nul is hoe nachtelijke fouten onzichtbaar blijven.

Dat is de bedoeling. Dezelfde broncode draait op Linux, macOS en Windows, dus het bestand van de analist en dat van de geplande job zijn hetzelfde bestand. De dekking is niet de hele taal, dus de eerlijke manier om dat voor jouw code te bevestigen is hem op beide plekken te draaien en de logs te vergelijken.

Altair SLC draait ook SAS-taalprogramma's zonder SAS-licentie, Linux inbegrepen, en doet dat al veel langer dan wij. Voor een serverpark waar het randgeval van iemand anders al is tegengekomen en opgelost, is die staat van dienst echt geld waard. Vergelijk beide. Siemens verkoopt het inmiddels als Rapidminer SLC, dus zoek onder beide namen.

Vaak wel, en op een server is dat verleidelijker dan elders omdat het omringende gereedschap toch al Python is. Is de SAS-code klein, of verlaat het team SAS sowieso, herschrijf hem dan. Het argument om hem te draaien zoals hij is, is het sterkst als er veel van is, die gevalideerd is, en herschrijven opnieuw valideren betekent en niet slechts opnieuw coderen.

Draai je SAS-programma's op je Linux-servers

Eén binary, geen licentieserver, en een exitcode waar je scheduler op kan vertrouwen.

Gratis proefperiode starten