Linux で SAS コードを実行する方法

この質問への回答のほとんどは、すでに SAS を持っていて GUI なしで動かしたいだけ、という前提に立っています。これはもう一方のケースのためのものです。プログラムはある、ライセンスはない、それでもジョブは今夜サーバーで動かさなければならない。

短い答え

Jenner は単一のバイナリです。サーバーに置き、.sas ファイルを指定すれば実行されます。GUI もディスプレイも不要で、到達すべきライセンスサーバーもなく、起動時に確保するものもありません。プログラムが失敗すれば非ゼロで終了します。スケジューラが実際に気にするのはそこです。まだ比較検討中であれば、下の質問が Linux ユーザーに実際にあるすべての道筋を挙げています。私たち以外の選択肢も含めてです。

Linux の作業が実際に実行される方法に合わせて作られています

cron から、systemd タイマーから、Airflow のタスクから、GitHub Actions のジョブから、あるいはコンテナの中から呼び出せます。stdin から読み、stdout とログファイルに書き出すため、セッションを要求するのではなく、すでにマシン上にあるツールと組み合わさります。

Linux で動作するもの

Jenner は SAS 互換です。プログラムがすでに書かれている言語が、今お使いのものと同じステートメント名とオプション名のままサーバー上で動作します。

DATA ステップ、PROC SQL、マクロ

言語の中核は書かれたとおりに動作します。DATA ステップのロジック、配列、フォーマットとインフォーマット、マクロ機能、そして PROC SQL です。SAS 9.4 の構文に対して書かれたコードは移植作業を必要としません。

100 のプロシジャ

回帰と線形モデル、生存時間解析、多変量解析とクラスタリング、時系列、品質管理、集計とレポート。各プロシジャには公開リファレンスページがあるため、スケジュールされたジョブの依存関係をスケジュールする前に確認できます。

すでにサーバー上にあるファイル

Jenner は SAS7BDAT と XPT を直接読み書きし、CSV と Parquet にも対応します。マウントされたボリュームやオブジェクトストレージ上のデータセットは変換不要で、出力は後続のジョブが想定する形式で書き戻せます。

アナリストが書いたそのままのプログラム

同じソースが Linux、macOS、Windows で動作します。誰かのノート PC で開発されたプログラムが、ここではスケジュールされたジョブとしてそのまま動きます。分析と本番の間に通常入る書き直しがなくなります。

提示できる結果

Jenner は NIST Statistical Reference Datasets ベンチマークの 58 データセットすべてに合格しています。これは統計ソフトウェアの精度に関する標準的な第三者スイートです。プロシジャリファレンスは全文が公開されているため、特定の PROC がサポートされているという主張は、パイプラインに載せる前に確認できます。

よくあるご質問

Jenner のバイナリをインストールし、ファイルに対して実行してください。SAS 言語の独立した実装であるため、SAS が存在しなくても、SAS ライセンスがなくても、Linux 上で .sas プログラムを直接実行します。事前に変換は行いません。

はい。Linux は SAS 9.4 がサポートするプラットフォームなので、Apple シリコンのようなプラットフォームの問題ではありません。障壁はライセンスであり、サーバーでは通常ライセンスサーバーも障壁になります。そこに到達できないマシンは動きません。

はい。GUI はなく、ディスプレイを必要とするものもありません。通常のコマンドライン プログラムであり、それこそが SSH でしか到達しないマシンで使える理由です。

いいえ。Jenner は SAS 言語のクリーンルーム実装であり、SAS ソフトウェアを組み込むことも、ラップすることも、呼び出すこともありません。更新すべきライセンスはなく、深夜 2 時にジョブが失敗する相手となるライセンスサーバーもありません。

バイナリをイメージにコピーし、エントリポイントとして、あるいは独自のスクリプトから呼び出してください。起動にデーモンもディスプレイもネットワーク呼び出しも不要なので、これを実行するコンテナは選んだベースイメージと同じだけ小さく再現可能です。

はい。これはここにたどり着く一般的な理由です。意味のある終了コードを持つ単一バイナリであるため、CI ジョブは .sas プログラムをビルド手順として実行し、プログラムが失敗したときにパイプラインを失敗させられます。cron、systemd タイマー、Airflow からのスケジュールも同様に機能します。

はい。失敗したプログラムは非ゼロで終了するため、cron のメール、systemd ユニット、パイプラインの手順が、ログに埋もれたエラーを伴うクリーンな実行ではなく、失敗そのものを認識します。これは採用するどんなものについても確認する価値があります。赤い文字で埋まったログと終了コード 0 という組み合わせこそ、夜間の失敗が見えないままになる仕組みです。

それが意図です。同じソースが Linux、macOS、Windows で動作するため、アナリストのファイルとスケジュールされたジョブのファイルは同じファイルです。カバー範囲は言語の全体ではないため、ご自身のコードについて確認する誠実な方法は、両方の場所で実行してログを比較することです。

Altair SLC も SAS ライセンスなしで SAS 言語のプログラムを実行しており、Linux も対象で、私たちよりはるかに長い実績があります。他社の特殊なケースがすでに発生し解決済みであるサーバー群にとって、その実績は実際の金額に値します。両方を比較してください。 現在はシーメンスが Rapidminer SLC として販売しているため、両方の名前で検索するとよいでしょう。

多くの場合そうすべきです。サーバー上では周辺のツールがすでに Python であるため、他の場所よりも魅力的に映ります。SAS コードが少ない、あるいはチームがいずれにせよ SAS から離れるのであれば、書き直してください。そのまま実行する根拠が最も強いのは、量が多く、検証済みで、書き直しが単なる再コーディングではなく再検証を意味する場合です。

Linux サーバーで SAS プログラムを実行する

バイナリ 1 つ、ライセンスサーバーなし、そしてスケジューラが信頼できる終了コード。

無料で試す