Cómo ejecutar código SAS en Linux

La mayoría de las respuestas a esta pregunta dan por supuesto que ya tiene SAS y solo lo quiere sin interfaz. Esta es para el otro caso: los programas existen, la licencia no, y el trabajo tiene que ejecutarse esta noche en el servidor igualmente.

La respuesta corta

Jenner es un único binario. Póngalo en el servidor, apúntelo a un archivo .sas y se ejecuta: sin interfaz gráfica, sin pantalla, sin servidor de licencias al que llegar y sin nada que reservar al arrancar. Sale con un valor distinto de cero cuando el programa falla, que es la parte que de verdad le importa a un planificador. Si todavía está comparando, las preguntas de abajo nombran todas las vías que tiene un usuario de Linux, incluidas las que no somos nosotros.

Pensado para cómo se ejecuta realmente el trabajo en Linux

Llámelo desde cron, desde un temporizador de systemd, desde una tarea de Airflow, desde un trabajo de GitHub Actions o desde dentro de un contenedor. Lee de stdin y escribe en stdout y en un archivo de log, así que se compone con las herramientas que ya están en la máquina en lugar de pedir una sesión.

Qué se ejecuta en Linux

Jenner es compatible con SAS: el lenguaje en el que ya están escritos sus programas, ejecutándose en el servidor con los mismos nombres de sentencias y opciones que usa hoy.

Pasos DATA, PROC SQL y macros

El núcleo del lenguaje se ejecuta tal cual — lógica del paso DATA, arrays, formatos e informatos, la facilidad de macros y PROC SQL. El código escrito contra la sintaxis de SAS 9.4 no necesita una fase de migración.

100 procedimientos

Regresión y modelos lineales, análisis de supervivencia, métodos multivariantes y agrupamiento, series temporales, control de calidad, resumen e informes. Cada procedimiento tiene una página de referencia publicada, así que las dependencias de una tarea programada pueden comprobarse antes de programarla.

Los archivos que ya están en el servidor

Jenner lee y escribe SAS7BDAT y XPT directamente, además de CSV y Parquet. Los conjuntos de datos en un volumen montado o en un almacén de objetos no necesitan conversión, y la salida puede escribirse en el formato que espera la tarea siguiente.

El mismo programa que escribió el analista

El mismo código fuente se ejecuta en Linux, macOS y Windows. Un programa desarrollado en un portátil se ejecuta sin cambios como tarea programada aquí, lo que elimina la reescritura que suele separar el análisis de la producción.

Resultados que puede demostrar

Jenner supera los 58 conjuntos de datos del banco de pruebas NIST Statistical Reference Datasets, la suite independiente de referencia para la precisión del software estadístico. La referencia de procedimientos está publicada íntegramente, así que la afirmación de que un PROC concreto está admitido es comprobable antes de ponerlo en una canalización.

Preguntas frecuentes

Instale el binario de Jenner y ejecútelo contra el archivo. Es una implementación independiente del lenguaje SAS, así que ejecuta programas .sas directamente en Linux sin SAS presente y sin licencia de SAS. No se convierte nada antes.

Sí. Linux es una plataforma admitida por SAS 9.4, así que no es un problema de plataforma como lo es Apple silicon. El obstáculo es la licencia, y en un servidor suele ser también el servidor de licencias: una máquina que no puede alcanzarlo no ejecuta nada.

Sí. No hay interfaz gráfica ni nada que quiera una pantalla. Es un programa de línea de comandos corriente, que es lo que lo hace utilizable en una máquina a la que solo llega por SSH.

No. Jenner es una implementación en sala limpia del lenguaje SAS y no incorpora, envuelve ni invoca software de SAS. No hay licencia que renovar ni servidor de licencias contra el que el trabajo pueda fallar a las dos de la madrugada.

Copie el binario en la imagen e invóquelo como entrypoint o desde su propio script. No necesita demonio, pantalla ni llamada de red para arrancar, así que un contenedor que lo ejecute es tan pequeño y reproducible como la imagen base que eligió.

Sí, y es un motivo frecuente para llegar aquí. Como es un único binario con un código de salida con significado, un trabajo de CI puede ejecutar un programa .sas como paso de compilación y hacer fallar la canalización cuando el programa falla. Planificarlo desde cron, un temporizador de systemd o Airflow funciona igual.

Sí. Un programa que falla sale con un valor distinto de cero, de modo que el correo de cron, una unidad de systemd o un paso de la canalización ve el fallo en lugar de una ejecución limpia con un error enterrado en el log. Conviene comprobarlo en todo lo que adopte: un log lleno de rojo y un código de salida de cero es como los fallos nocturnos permanecen invisibles.

Esa es la intención. El mismo código fuente se ejecuta en Linux, macOS y Windows, así que el archivo del analista y el de la tarea programada son el mismo archivo. La cobertura no es todo el lenguaje, así que la forma honesta de confirmarlo para su código es ejecutarlo en ambos sitios y comparar los logs.

Altair SLC también ejecuta programas en lenguaje SAS sin licencia de SAS, Linux incluido, y lleva haciéndolo mucho más tiempo que nosotros. Para un parque de servidores donde el caso límite de otro ya se encontró y se arregló, esa trayectoria vale dinero real. Compare ambos. Siemens ahora lo vende como Rapidminer SLC, así que conviene buscar por ambos nombres.

A menudo sí, y en un servidor es más tentador que en otros sitios porque el utillaje de alrededor ya es Python. Si el código SAS es poco, o el equipo va a dejar SAS de todos modos, reescríbalo. El argumento para ejecutarlo tal cual es más fuerte cuando hay mucho, está validado, y reescribirlo implica volver a validarlo y no solo volver a programarlo.

Ejecute sus programas SAS en sus servidores Linux

Un binario, sin servidor de licencias, y un código de salida en el que su planificador puede confiar.

Empezar la prueba gratuita