UNIXだとsas.serversありますがWindowsにはありません。なかなか使い勝手の良いスクリプトが無かったのですが、PowerShellで書かれているサービス起動/停止のスクリプトがありました。このスクリプト、特に設定は無しでGet-ServiceでSASのサービスを探して、起動順序に従って処理してくれます。
Start/Stop all SAS Services in Windows using PowreShell
SASプログラムとログを解析するユーティリティを開発するための備忘録です。This is a memo to develop utility that analyzes the SAS log.
UNIXだとsas.serversありますがWindowsにはありません。なかなか使い勝手の良いスクリプトが無かったのですが、PowerShellで書かれているサービス起動/停止のスクリプトがありました。このスクリプト、特に設定は無しでGet-ServiceでSASのサービスを探して、起動順序に従って処理してくれます。
Start/Stop all SAS Services in Windows using PowreShell
/* ジョブスケジューリングのJSONファイルとマップのファイルを定義 */ filename folders temp; filename jsonmap temp; /* JSONファイルを取得 */ proc http url="https://henteko.azure.com/jobFlowScheduling/flows" out=flows oauth_bearer=sas_services; headers 'Accept'='application/vnd.sas.collection+json'; run; /* JSONファイルの先頭をログに出力して確認するだけ */ data _null_; infile flows; length buf $4096; input buf 1-4096; put _all_; run; /* JSONエンジンで読み込ませて、マップは生成 */ libname flows json fileref=folders map=jsonmap automap=replace; /* 後はライブラリ参照名から要素と中身を見る */ proc print data=flows.items; run;
私が良く使うけど、意外と認識されていないのが PROC OPTIONSのオプションVALUEです。このVALUEオプションを付けると、SASシステムオプションの設定がどこで行われたか判ります。引数、特定のコンフィグファイルが一目瞭然です。
proc option value=encoding value;
run;
SAS9.4のインストール・構成は、手順書が合っても失敗することが多く、改善が必要と感じる。マニュアルには説明あるが、勘所として役立つオプションは埋もれている。ということで、私が独断で選んだベストプラクティスを挙げてみる。
SAS9.4のシステムが遅いときに、どこから点検していけば素早く問題を解決できるか?思いつくままに、場当たり的に探すのは効率が悪い。また、基盤の問題はSASからは検出できないことが多いため、OS、N/Wも含めた調査が必要である。切り分け、問題を調査するときに役立つ点検ポイントを列挙する。
echo 'cat /MetadataServerBackupManifest/Backups/Backup[last()]/@*' | \ xmllint --shell Lev1/SASMeta/MetadataServer/Backups/MetadataServerBackupHistory.xml | \ grep =実行すると以下のような結果が得られます。
Status="Successful" StartingUserID="META:Scheduler" StartDateTime="2021-02-10T01:00:00+09:00" Name="2021-02-10T01_00_00+09_00" Directory="Backups/2021-02-10T01_00_00+09_00" Comment="" Reorg="N" Size="539963257" LastVerifyDateTime="2021-02-10T18:42:58+09:00" LastVerifyStatus="Successful"
よく使うけど、すぐに忘れるタイムスタンプの文字列
%let dt=%sysfunc(putn(%sysfunc(datetime()), E8601DT20.));
2021-01-17T20:35:17
SAS9でメタデータサーバの情報を探し出して、リストを作ることは稀にあります。たまにしかやらないから、どんな検索式を与えるか忘れてしまいます。備忘としていくつか例を残してい置きます。メタデータのAPIは、情報を1個ずつとると遅いのでできれば検索式で絞り込んで少ない回数で取得した方が良いです。
配置済みのジョブの検索
JFJob?@id contains '.' and @PublicType = 'DeployedJob'