Como executar código SAS no Linux

A maioria das respostas a esta pergunta pressupõe que já tem SAS e apenas o quer sem interface. Esta é para o outro caso: os programas existem, a licença não, e a tarefa tem de correr esta noite no servidor na mesma.

A resposta curta

O Jenner é um único binário. Coloque-o no servidor, aponte-o a um ficheiro .sas e ele corre: sem interface gráfica, sem ecrã, sem servidor de licenças a contactar e sem nada para reservar no arranque. Sai com um valor diferente de zero quando o programa falha, que é a parte que interessa mesmo a um agendador. Se ainda está a comparar, as perguntas abaixo nomeiam todos os caminhos que um utilizador de Linux tem, incluindo os que não somos nós.

Feito para a forma como o trabalho em Linux é realmente executado

Chame-o a partir do cron, de um temporizador systemd, de uma tarefa Airflow, de um job do GitHub Actions ou de dentro de um contentor. Lê do stdin e escreve no stdout e num ficheiro de log, por isso compõe-se com as ferramentas que já estão na máquina em vez de exigir uma sessão.

O que corre no Linux

O Jenner é compatível com SAS: a linguagem em que os seus programas já estão escritos, a correr no servidor com os mesmos nomes de instruções e opções que usa hoje.

Passos DATA, PROC SQL e macros

O núcleo da linguagem corre tal como está — lógica do passo DATA, arrays, formatos e informatos, a facilidade de macros e PROC SQL. Código escrito para a sintaxe do SAS 9.4 não precisa de uma fase de portabilidade.

100 procedimentos

Regressão e modelos lineares, análise de sobrevivência, métodos multivariados e agrupamento, séries temporais, controlo de qualidade, resumo e relatórios. Cada procedimento tem uma página de referência publicada, por isso as dependências de uma tarefa agendada podem ser verificadas antes de a agendar.

Os ficheiros que já estão no servidor

O Jenner lê e escreve SAS7BDAT e XPT diretamente, além de CSV e Parquet. Conjuntos de dados num volume montado ou num armazenamento de objetos não precisam de conversão, e a saída pode ser escrita no formato que a tarefa seguinte espera.

O mesmo programa que o analista escreveu

O mesmo código-fonte corre no Linux, macOS e Windows. Um programa desenvolvido num portátil corre sem alterações como tarefa agendada aqui, o que elimina a reescrita que costuma separar a análise da produção.

Resultados que pode demonstrar

O Jenner passa nos 58 conjuntos de dados do benchmark NIST Statistical Reference Datasets, a suite independente de referência para a exatidão de software estatístico. A referência de procedimentos é publicada na íntegra, por isso a afirmação de que um PROC específico é suportado é verificável antes de o pôr num pipeline.

Perguntas frequentes

Instale o binário do Jenner e execute-o sobre o ficheiro. É uma implementação independente da linguagem SAS, por isso executa programas .sas diretamente no Linux sem SAS presente e sem licença SAS. Nada é convertido antes.

Sim. O Linux é uma plataforma suportada pelo SAS 9.4, por isso não é um problema de plataforma como é o Apple silicon. O obstáculo é a licença, e num servidor costuma ser também o servidor de licenças: uma máquina que não lhe chega não corre.

Sim. Não há interface gráfica nem nada que queira um ecrã. É um programa de linha de comandos comum, e é isso que o torna utilizável numa máquina a que só chega por SSH.

Não. O Jenner é uma implementação em sala limpa da linguagem SAS e não incorpora, não encapsula nem invoca software SAS. Não há licença para renovar nem servidor de licenças contra o qual a tarefa possa falhar às duas da manhã.

Copie o binário para a imagem e invoque-o como entrypoint ou a partir do seu próprio script. Não precisa de daemon, de ecrã nem de uma chamada de rede para arrancar, por isso um contentor que o execute é tão pequeno e reproduzível quanto a imagem base que escolheu.

Sim, e é uma razão frequente para chegar aqui. Por ser um único binário com um código de saída com significado, um job de CI pode executar um programa .sas como passo de build e fazer falhar o pipeline quando o programa falha. Agendar a partir do cron, de um temporizador systemd ou do Airflow funciona da mesma maneira.

Sim. Um programa que falha sai com um valor diferente de zero, por isso o correio do cron, uma unidade systemd ou um passo do pipeline vê a falha em vez de uma execução limpa com um erro enterrado no log. Vale a pena verificar isto em tudo o que adotar: um log cheio de vermelho e um código de saída zero é como as falhas noturnas permanecem invisíveis.

É essa a intenção. O mesmo código-fonte corre no Linux, macOS e Windows, por isso o ficheiro do analista e o da tarefa agendada são o mesmo ficheiro. A cobertura não é a linguagem inteira, por isso a forma honesta de o confirmar para o seu código é executá-lo em ambos os sítios e comparar os logs.

O Altair SLC também executa programas em linguagem SAS sem licença SAS, Linux incluído, e fá-lo há muito mais tempo do que nós. Para um parque de servidores onde o caso limite de outra pessoa já foi encontrado e corrigido, esse historial vale dinheiro real. Compare os dois. A Siemens vende-o agora como Rapidminer SLC, por isso vale a pena procurar pelos dois nomes.

Muitas vezes sim, e num servidor é mais tentador do que noutro sítio porque as ferramentas à volta já são Python. Se o código SAS é pouco, ou a equipa vai deixar o SAS de qualquer forma, reescreva-o. O argumento para o executar tal como está é mais forte quando há muito, está validado, e reescrevê-lo implica revalidá-lo e não apenas voltar a programá-lo.

Execute os seus programas SAS nos seus servidores Linux

Um binário, sem servidor de licenças, e um código de saída em que o seu agendador pode confiar.

Iniciar avaliação gratuita