Comment exécuter du code SAS sous Linux

La plupart des réponses à cette question supposent que vous avez déjà SAS et que vous le voulez simplement sans interface. Celle-ci s'adresse à l'autre cas : les programmes existent, la licence non, et la tâche doit quand même s'exécuter ce soir sur le serveur.

La réponse courte

Jenner est un binaire unique. Placez-le sur le serveur, pointez-le vers un fichier .sas et il s'exécute — sans interface graphique, sans affichage, sans serveur de licences à joindre et sans rien à réserver au démarrage. Il sort avec un code non nul quand le programme échoue, et c'est la partie qui intéresse réellement un ordonnanceur. Si vous comparez encore, les questions ci-dessous nomment toutes les voies dont dispose un utilisateur Linux, y compris celles qui ne sont pas les nôtres.

Conçu pour la façon dont le travail Linux est réellement lancé

Appelez-le depuis cron, depuis un timer systemd, depuis une tâche Airflow, depuis un job GitHub Actions, ou depuis un conteneur. Il lit sur stdin et écrit sur stdout et dans un fichier journal, donc il se compose avec les outils déjà présents sur la machine au lieu d'exiger une session.

Ce qui s'exécute sous Linux

Jenner est compatible SAS : le langage dans lequel vos programmes sont déjà écrits, exécuté sur le serveur avec les mêmes noms d'instructions et d'options qu'aujourd'hui.

Étapes DATA, PROC SQL et macros

Le cœur du langage s'exécute tel quel — logique de l'étape DATA, tableaux, formats et informats, la facilité macro et PROC SQL. Le code écrit selon la syntaxe SAS 9.4 n'a pas besoin d'une phase de portage.

100 procédures

Régression et modèles linéaires, analyse de survie, méthodes multivariées et classification, séries temporelles, contrôle qualité, synthèse et reporting. Chaque procédure dispose d'une page de référence publiée, de sorte que les dépendances d'une tâche planifiée peuvent être vérifiées avant sa planification.

Les fichiers déjà sur le serveur

Jenner lit et écrit les fichiers SAS7BDAT et XPT directement, ainsi que CSV et Parquet. Les jeux de données sur un volume monté ou un stockage objet n'ont pas besoin d'être convertis, et la sortie peut être réécrite dans le format attendu par la tâche suivante.

Le programme écrit par l'analyste

Le même code source s'exécute sous Linux, macOS et Windows. Un programme développé sur un portable s'exécute tel quel comme tâche planifiée ici, ce qui supprime la réécriture qui sépare habituellement l'analyse de la production.

Des résultats que vous pouvez démontrer

Jenner réussit les 58 jeux de données du benchmark NIST Statistical Reference Datasets, la suite de référence tierce pour la précision des logiciels statistiques. La référence des procédures est publiée intégralement, donc l'affirmation qu'une PROC précise est prise en charge est vérifiable avant de la mettre dans un pipeline.

Questions fréquentes

Installez le binaire Jenner et lancez-le sur le fichier. C'est une implémentation indépendante du langage SAS : elle exécute les programmes .sas directement sous Linux, sans SAS présent et sans licence SAS. Rien n'est converti au préalable.

Oui. Linux est une plateforme prise en charge par SAS 9.4, ce n'est donc pas un problème de plateforme comme l'est Apple silicon. L'obstacle est la licence, et sur un serveur c'est souvent aussi le serveur de licences : une machine qui ne peut pas le joindre n'exécute rien.

Oui. Il n'y a pas d'interface graphique et rien qui réclame un affichage. C'est un programme en ligne de commande ordinaire, ce qui le rend utilisable sur une machine que vous n'atteignez jamais autrement qu'en SSH.

Non. Jenner est une implémentation en salle blanche du langage SAS et n'intègre, n'encapsule ni n'appelle de logiciel SAS. Il n'y a pas de licence à renouveler ni de serveur de licences contre lequel la tâche pourrait échouer à deux heures du matin.

Copiez le binaire dans l'image et invoquez-le comme point d'entrée ou depuis votre propre script. Il n'a besoin ni de démon, ni d'affichage, ni d'appel réseau pour démarrer : un conteneur qui l'exécute est aussi petit et reproductible que l'image de base choisie.

Oui, et c'est une raison fréquente d'arriver ici. Comme c'est un seul binaire avec un code de sortie significatif, un job CI peut exécuter un programme .sas comme étape de build et faire échouer le pipeline quand le programme échoue. La planification via cron, un timer systemd ou Airflow fonctionne de la même façon.

Oui. Un programme en échec sort avec un code non nul, de sorte que le mail de cron, une unité systemd ou une étape de pipeline voit l'échec plutôt qu'une exécution propre avec une erreur enfouie dans le journal. Cela vaut la peine d'être vérifié sur tout ce que vous adoptez : un journal plein de rouge et un code de sortie à zéro, c'est ainsi que les échecs nocturnes restent invisibles.

C'est l'intention. Le même code source s'exécute sous Linux, macOS et Windows, donc le fichier de l'analyste et celui de la tâche planifiée sont le même fichier. La couverture n'est pas l'intégralité du langage : la façon honnête de le confirmer pour votre code est de l'exécuter aux deux endroits et de comparer les journaux.

Altair SLC exécute lui aussi des programmes en langage SAS sans licence SAS, sous Linux compris, et le fait depuis bien plus longtemps que nous. Pour un parc de serveurs où le cas limite de quelqu'un d'autre a déjà été rencontré et corrigé, cet historique vaut de l'argent réel. Comparez les deux. Siemens le vend désormais sous le nom de Rapidminer SLC, donc cherchez sous les deux noms.

Souvent si, et sur un serveur c'est plus tentant qu'ailleurs parce que l'outillage autour est déjà en Python. Si le code SAS est peu volumineux, ou si l'équipe quitte SAS de toute façon, réécrivez-le. L'argument pour l'exécuter tel quel est le plus fort quand il y en a beaucoup, qu'il est validé, et que le réécrire implique de le revalider et non simplement de le recoder.

Exécutez vos programmes SAS sur vos serveurs Linux

Un binaire, aucun serveur de licences, et un code de sortie auquel votre ordonnanceur peut se fier.

Démarrer l'essai gratuit