Come eseguire codice SAS su Linux

Quasi tutte le risposte a questa domanda presuppongono che tu abbia già SAS e lo voglia soltanto senza interfaccia. Questa è per l'altro caso: i programmi esistono, la licenza no, e il job deve comunque girare stasera sul server.

La risposta breve

Jenner è un singolo binario. Mettilo sul server, puntalo a un file .sas e viene eseguito: nessuna interfaccia grafica, nessun display, nessun server di licenze da raggiungere e niente da prenotare all'avvio. Esce con un valore diverso da zero quando il programma fallisce, ed è la parte che interessa davvero a uno scheduler. Se stai ancora confrontando, le domande qui sotto nominano ogni strada che un utente Linux ha, comprese quelle che non siamo noi.

Pensato per come il lavoro su Linux viene realmente eseguito

Chiamalo da cron, da un timer systemd, da un task Airflow, da un job GitHub Actions o dall'interno di un container. Legge da stdin e scrive su stdout e su un file di log, quindi si compone con gli strumenti già presenti sulla macchina invece di chiedere una sessione.

Che cosa gira su Linux

Jenner è compatibile con SAS: il linguaggio in cui i tuoi programmi sono già scritti, eseguito sul server con gli stessi nomi di istruzioni e opzioni che usi oggi.

Passi DATA, PROC SQL e macro

Il nucleo del linguaggio gira così com'è — logica del passo DATA, array, formati e informati, la macro facility e PROC SQL. Il codice scritto per la sintassi SAS 9.4 non richiede una fase di porting.

100 procedure

Regressione e modelli lineari, analisi di sopravvivenza, metodi multivariati e clustering, serie storiche, controllo qualità, sintesi e reportistica. Ogni procedura ha una pagina di riferimento pubblicata, così le dipendenze di un job pianificato possono essere verificate prima di pianificarlo.

I file già sul server

Jenner legge e scrive SAS7BDAT e XPT direttamente, oltre a CSV e Parquet. I dataset su un volume montato o su uno storage a oggetti non vanno convertiti, e l'output può essere riscritto nel formato che il job a valle si aspetta.

Lo stesso programma scritto dall'analista

Lo stesso sorgente gira su Linux, macOS e Windows. Un programma sviluppato su un portatile gira invariato come job pianificato qui, il che elimina la riscrittura che di solito separa l'analisi dalla produzione.

Risultati che puoi dimostrare

Jenner supera tutti i 58 dataset del benchmark NIST Statistical Reference Datasets, la suite indipendente di riferimento per l'accuratezza del software statistico. Il riferimento delle procedure è pubblicato per intero, quindi l'affermazione che una PROC specifica sia supportata è verificabile prima di metterla in una pipeline.

Domande frequenti

Installa il binario Jenner ed eseguilo sul file. È un'implementazione indipendente del linguaggio SAS, quindi esegue programmi .sas direttamente su Linux senza SAS presente e senza licenza SAS. Nulla viene convertito prima.

Sì. Linux è una piattaforma supportata da SAS 9.4, quindi non è un problema di piattaforma come lo è Apple silicon. L'ostacolo è la licenza, e su un server spesso anche il server di licenze: una macchina che non riesce a raggiungerlo non esegue nulla.

Sì. Non c'è interfaccia grafica e niente che pretenda un display. È un normale programma da riga di comando, ed è ciò che lo rende utilizzabile su una macchina che raggiungi solo via SSH.

No. Jenner è un'implementazione clean-room del linguaggio SAS e non incorpora, non incapsula e non richiama software SAS. Non c'è licenza da rinnovare né server di licenze contro cui il job possa fallire alle due di notte.

Copia il binario nell'immagine e invocalo come entrypoint o dal tuo script. Non ha bisogno di un demone, di un display o di una chiamata di rete per partire, quindi un container che lo esegue è piccolo e riproducibile quanto l'immagine di base che hai scelto.

Sì, ed è un motivo frequente per arrivare qui. Essendo un singolo binario con un codice di uscita significativo, un job CI può eseguire un programma .sas come passo di build e far fallire la pipeline quando il programma fallisce. Pianificarlo da cron, da un timer systemd o da Airflow funziona allo stesso modo.

Sì. Un programma che fallisce esce con un valore diverso da zero, così la mail di cron, una unit systemd o un passo di pipeline vede il fallimento invece di un'esecuzione pulita con un errore sepolto nel log. Vale la pena verificarlo su qualunque cosa adotti: un log pieno di rosso e un codice di uscita pari a zero è il modo in cui i fallimenti notturni restano invisibili.

È l'intenzione. Lo stesso sorgente gira su Linux, macOS e Windows, quindi il file dell'analista e quello del job pianificato sono lo stesso file. La copertura non è l'intero linguaggio, quindi il modo onesto di confermarlo per il tuo codice è eseguirlo in entrambi i posti e confrontare i log.

Anche Altair SLC esegue programmi in linguaggio SAS senza licenza SAS, Linux compreso, e lo fa da molto più tempo di noi. Per un parco server dove il caso limite di qualcun altro è già stato incontrato e risolto, quell'esperienza vale denaro reale. Confronta entrambi. Siemens ora lo vende come Rapidminer SLC, quindi conviene cercare con entrambi i nomi.

Spesso sì, e su un server è più allettante che altrove perché gli strumenti intorno sono già Python. Se il codice SAS è poco, o il team lascia comunque SAS, riscrivilo. L'argomento per eseguirlo com'è è più forte quando ce n'è molto, è validato, e riscriverlo significa rivalidarlo e non solo ricodificarlo.

Esegui i tuoi programmi SAS sui tuoi server Linux

Un binario, nessun server di licenze, e un codice di uscita di cui il tuo scheduler può fidarsi.

Inizia la prova gratuita