一、背景の紹介
SAS Viyaに搭載されているSAS StudioはSASプログラムの作成と実行のツールとしてよくユーザーさんたちに利用されています。また、実際のビジネスの中では、SASプログラムのバッチ実行が必要となる場面もたくさん存在しています。しかし、多くのSAS9を活用している既存のユーザーは、Viyaでのバッチ実行方式に対してまだ詳しくないかもしれませんので、本ブログを通してViyaでバッチ方式でのSASプログラムの実行方法を紹介したいと思います。
以下は本記事内容の一覧です。読者は以下のリンクをで興味のあるセクションに直接ジャンプすることができます。
二、sas-viya CLIツールの紹介
1.sas-viya CLIとは
2.インストール方法の紹介
三、SASプログラムをバッチで実行する方法の紹介
1.バッチでSASプログラムの実行
2.実行されたバッチジョブの確認とログの取得方法
3.バッチジョブの削除と停止方法
二、sas-viya CLIツールの紹介
1.sas-viya CLIとは
SAS Viyaのコマンドラインインターフェース(以下はsas-viya CLI)は、コマンドライン上で、SAS ViyaのRESTサービスを利用することによって、SAS Viyaの設定や機能を利用するためのツールです。CLIは、グラフィカル・ユーザー・インターフェース(GUI)を使用する代わりに、プログラム的にSAS Viyaを操作するために使用することができます。
sas-viya CLIのbatchプラグインは、SAS Viya環境にコマンドラインからSASプログラムやコマンドをアップロードし、バッチ処理することを可能にします。プログラムをアップロードした後は、サーバ側でバッチ処理を実施するので、処理中にViyaのサーバとの接続を維持する必要はありません。
2.インストール方法の紹介
従来SAS9を利用しているユーザーは、sas.exeなどでSASプログラムをバッチで実行していたと思いますが、Viyaの場合はsas-viyaというコマンドラインツールを利用します。別途でインストールは必要ですが、Viyaのサービスへ接続できるところであれば、WindowsでもLinuxでも、任意のマシン上から遠隔でViya上でSASジョブの実行ができます。以下ではsas-viyaコマンドラインツールのインストールとセットアップ方法を紹介します。
まずは下記のサイトからお使いのOS(Linux, Window, OSX)に応じて、インストールファイルをダウンロードします。
https://support.sas.com/downloads/package.htm?pid=2512/
① Windowsをご利用の場合の手順は以下となります。Linuxユーザーの方は、こちらを参照ください。
(1)ダウンロードしたzipファイルを解凍し、sas-viya.exeのフォルダの下にshift+右クリックし、「PowelShellウィンドウをここで開く」をクリックします。
(2)利用開始の前に、接続先のViyaサーバ情報の初期登録が必要ですので、下記のコマンドを実行します。聞かれた内容を下記のように入力し、アクセス先を定義します。
.\sas-viya.exe profile init |
こちらのステップは初めて利用する際に、一回だけ実施します。Service Endpointは繋ぎ先のURLを入力し、それ以外の”Output type”と”Enable ANSI colored output”については、画面に出力されたメッセージのフォーマットを指定するものですので、お好みの設定で構いません。もしわからない場合は、それぞれにtextとyにすれば良いです。
(3)接続先の情報を設定し終わったら、次はサーバへのログインです。下記のコマンドを実行して、IDとPWを入力し、ログインします。
.\sas-viya auth login |
成功したら、下記のようなメッセージが表示されます。
(4)また、バッチでSASプログラムを実行するには専用のbatchプラグインが必要ですので、こちらのコマンドでダウンロードします。これで、sas-viyaツールのインストールと設定が完了しました。
.\sas-viya.exe plugins install --repo SAS batch |
② Linuxをご利用の場合の手順は以下となります。
(1)下記のコマンドでダウンロードしたファイルを解凍します。
tar -xvzf /<ファイル保存のパス>/sas-viya-cli-x.xx.x-download-linux-amd64.tgz |
(2)sas-viyaに実行権限を与えます。
chmod +x sas-viya |
(3)(オプション)Viyaに接続する際にSSL通信を利用する場合、下記のコマンドで証明書のパスを指定する必要があります。
export SSL_CERT_FILE={証明書のパス} |
(4)利用開始前に、接続先のViyaサーバの情報の初期登録が必要ですので、下記のコマンドを実行します。
.\sas-viya profile init |
こちらのステップは初めて利用する際に、一回だけを実施します。下記の画面の通りの内容が聞かれますので、それぞれに回答する必要があります。”Service Endpoint”は繋ぎ先のURLを入力し、それ以外の”Output type”と”Enable ANSI colored output”については、画面に出力されたメッセージのフォーマットを指定するものですので、お好みの設定で構いません。もしわからない場合は、それぞれにtextとyにすれば良いです。
(5)接続先の情報を設定し終わったら、次はサーバへのログインです。下記のコマンドを実行して、IDとPWを入力し、ログインします。
.\sas-viya auth login |
成功したら、下記のようなメッセージが表示されます。
(6)また、バッチでSASプログラムを実行するには専用のbatchプラグインが必要ですので、こちらのコマンドでダウンロードします。これで、sas-viyaツールのインストールと設定が完了しました。
sas-viya plugins install --repo SAS batch |
三、SASプログラムをバッチで実行する方法の紹介
1.バッチでSASプログラムの実行
sas-viya cliでSASプログラムをバッチで実行する際には多くのオプションが利用できますが、本ブログではいくつかのよく利用するパターンを紹介します。各オプションの詳細な説明は、以下のリンク先のドキュメントを参照してください。
https://go.documentation.sas.com/doc/en/pgmsascdc/v_033/gsub/p10gm7sg1m9k8dn1lvh0an2cic08.htm/
また、本ツールでSASプログラムを実行する際のやり方はLinuxもWindowsも同じですので、ここではLinuxでの実行方法で紹介します。Windowsの場合、sas-viyaをsas-viya.exeに変更したうえで下記のステップを実施すれば良いです。
①一般的なSASプログラムの実行
#コピー用 sas-viya batch jobs submit-pgm --pgm-path {実行するSASプログラムのパス} --context default |
②入力データ付きでSASプログラムの実行
例えば、以下のサンプルプログラムmysasprogram.sasの中で、mydata.csvを入力データとして実行する場合、
filename csv "!BATCHJOBDIR/mydata.csv"; /* Import the CSV file */ proc import datafile=csv out=work.mysasdata dbms=csv; getnames=yes; run; |
ここで--job-fileのオプションを使って、mydata.csvをアップロードし、mysasprogram.sasで使用するようにもできます。以下はコマンドの例です。
#コピー用 sas-viya batch jobs submit-pgm --pgmpath {実行するSASプログラムのパス} --context default --job-file {入力データのパス} |
③パラメータ付きでSASプログラムの実行
例えば、外部から以下のサンプルプログラムのマクロ変数&sysparmに値1を指定する場合、
Libname _outlib “/tmp/outlib_&sysparm”; %let outdir=/tmp/outdir_&sysparm; |
ここで、--sasoptionのオプションを使って、マクロ変数&sysparmの値を1で指定します。以下はコマンドの例です。
#コピー用 sas-viya batch jobs submit-pgm --pgmpath {実行するSASプログラムのパス} --context default –sasoption “-{パラメータ名} {パラメータ値}” |
SASプログラムを実行したら、SASプログラムは入力ファイルと一緒に、SAS Viyaへアップロードされ、サーバで実行し始めます。その後、下記のようなメッセージが表示されます。
>>> File set created, ID="JOB_20200817_191949_741_1"
>>> Uploading "mypgm.sas"
>>> Job submitted, ID="40f55940-f387-4a17-a1fd-1aaf2a960b19", Workload Job ID="613".
2.実行されたバッチジョブの確認とログの取得方法
①バッチジョブの実行状況の確認
#コピー用 sas-viya batch jobs list |
または、--sort-byオプションを使って、一つまたは複数個の列によって、リストを並び変えることも可能です。以下のコマンド例では、バッチジョブの開始時間順で並び変える方法を示しています。
#コピー用 sas-viya batch jobs list --sort-by startedTimeStamp |
実行したら下記のように、バッチジョブの情報の一覧リストが表示されます。この中に、バッチジョブの実行開始と終了の時間、実行状態、生成されたバッチジョブIDなどの情報が確認できます。バッチジョブIDはジョブの結果取得、削除、実行停止する際に使われます。
②バッチジョブの実行結果とログファイルの取得
下記のコマンド使って、--job-idをステップ①で確認したジョブIDを指定し、実行の結果を取得します。
#コピー用 sas-viya batch jobs get-results --job-id {実行したバッチジョブのID} |
コマンドを実行したら、下記のようなメッセージが表示され、ログファイルがローカルにダウンロードされます。注意しなければならないのは、ログファイルをダウンロード後に、サーバ上のログファイルが削除されます。
③バッチジョブ完了後に自動的に実行結果とログファイルをダウンロードする方法
SASプログラムを実行時に、下記のコマンドを利用すれば、プログラムが実行完了後に、自動的に実行結果とログファイルをローカルまでダウンロードしてくれます。注意しなければならないのは、こちらのコマンドを実行したら、SASプログラムが実行完了まで動き続けますので、処理時間が短い場合にはおすすめします。
#コピー用 sas-viya batch jobs get-results --job-id {実行したバッチジョブのID} --wait-results |
3.バッチジョブの削除と停止方法
最後は実行したジョブの削除と停止する方法を紹介します。
①バッチジョブの削除方法
下記のコマンドを通して、実行中または実行完了のバッチジョブを削除します。
#コピー用 sas-viya batch jobs delete --job-id {実行したバッチジョブのID} |
②実行中のバッチジョブの停止方法
下記のコマンドを通して、実行中のバッチジョブを停止します。
#コピー用 sas-viya batch jobs kill --job-id {実行したバッチジョブのID} |
四、最後
今回のブログでは、sas-viyaのcliツールによる通常のバッチジョブの実行と管理方法について紹介しました。 実は、今回紹介した内容以外にも、ユーザーのさまざまなニーズに応えるために、多くのオプションや使い方があります。 ご興味のある方は、下記リンク先のドキュメントをご参照ください。
https://go.documentation.sas.com/doc/en/pgmsascdc/v_033/gsub/p10gm7sg1m9k8dn1lvh0an2cic08.htm/