1 data "/var/tmp/mylib/class";
2 set sashelp.class;
3 keep age name;
4 run;
NOTE: There were 19 observations read from the data set SASHELP.CLASS.
NOTE: The data set /var/tmp/mylib/class has 19 observations and 2 variables.
NOTE: DATA statement used (Total process time):
real time 0.01 seconds
cpu time 0.01 seconds
NOTE: SAS Institute Inc., SAS Campus Drive, Cary, NC USA 27513-2414
NOTE: The SAS System used:
real time 0.08 seconds
cpu time 0.03 seconds
% ls -l /var/tmp/mylib
-rw-rw-r-- 1 sas sas 131072 8月 28 17:39 2018 class.sas7bdat
SASプログラムとログを解析するユーティリティを開発するための備忘録です。This is a memo to develop utility that analyzes the SAS log.
2018年8月28日火曜日
データステップにデータセット名ではなく、パスを直接書く
データステップの書き方で、データセット名ではなくファイルのパスを直接書けます。これは、同僚に教えてもらいました。マニュアルを見ると、以下のようにTIPSとして記述がありました。
Tips:Instead of using a data set name, you can specify the physical pathname to the file, using syntax that your operating system understands. The pathname must be enclosed in single or double quotation marks.
2018年5月9日水曜日
カタログにSASプログラムを格納するサンプル
カタログにプログラムを格納するサンプルです。探したら良い例が見つからなかったのでメモしておきます。
/* ディレクトリにあるMM_MISC.sasをカタログに格納する */
filename there '/tmp' ;
libname mylib '/tmp/sashelp' ;
%let trialcode = MM_MISC;
%let catname = modelmgr;
data _null_ ;
filename mycat catalog "mylib.&catname" lrecl= 256 ;
file mycat("&trialcode..source") ;
infile there("&trialcode..sas") ;
input ;
put _infile_ ;
run;
proc catalog c=mylib.&catname;
contents;
run;
quit;
/* 格納したプログラムを読み込む */
filename chkinit catalog "mylib.&catname..&trialcode..source";
%include chkinit;
2018年5月2日水曜日
カタログに含まれているソースコードを1ずつ取り出してファイルに保存
カタログの中に含まれているソースコードを、1つずつ取り出してディレクトリに出力するマクロです。Model ManagerのAPIの中身を見るために、書きました。
/* ソースコードをファイルに出力するマクロ */
%macro _myfile(catalog=, memname=, dir=);
data _null_;
infile "&catalog..&memname..source" catalog;
file "&dir./&memname..sas";
input;
put _infile_;
run;
%mend;
/* カタログに含まれているソースコードをディレクトリに出力するマクロ */
%macro extract_source(in=, dir=);
%local out memname;
data;
stop;
run;
%let out=&SYSLAST;
%let memname=%substr(&out, 6);
proc catalog catalog=∈
contents out=&out;
run;
data _null_;
set &out(keep=name type);
where type eq 'SOURCE';
attrib catalog length=$32;
attrib dir length=$128;
catalog = "&in";
dir = "&dir";
call execute('%_myfile(catalog='||catalog||", memname="||name||", dir="||dir||")");
run;
proc datasets lib=work nolist;
delete &memname;
quit;
%mend;
%extract_source(in=sashelp.modelmgr, dir=/var/tmp);
2018年4月17日火曜日
SAS9.4 TS1M5 - VARCHARのデータ型
同僚から聞いたネタです。
TS1M5の新機能でVARCHARが加わったそうです。資料を探したら、日本語の新機能とWhat's Newに記載ありました。
SAS9.4の新機能
What's New in SAS 9.4 National Language Support
使い方はこれから勉強です。
TS1M5の新機能でVARCHARが加わったそうです。資料を探したら、日本語の新機能とWhat's Newに記載ありました。
SAS9.4の新機能
What's New in SAS 9.4 National Language Support
使い方はこれから勉強です。
2018年4月5日木曜日
SAS Environment Manager 2.5 - 使いどころ
製品紹介から引用したSAS Environment Managerの説明
SAS Environment Managerは、SAS配置の新しいモニタリングと管理システムです。リソースの自動検出、リモートシステムのモニタリング、個人用ダッシュボードと役割ベースダッシュボード、アラート、視覚化などの機能が実装されています。中間層とSAS Server層の両層のサーバーに対する、Webベースの管理、操作、事前予防型のモニタリングを提供します。SAS Environment Managerには、エンタープライズレベルの操作機能を提供するために、VMwareのHypericテクノロジの一部が組み込まれています。私の説明
もしあなたが以下の条件に当てはまるならば、SAS Environment Managerの利用を推奨します。あまり浸透していないようですが、構築および運用で役立つ機能です。- SAS 9.4 Intelligence platform構成でかつ複数サーバ構成
- システムの安定稼働で監視が必要
- 負荷テスト、ロングランテストで設定を調整したい
勧める理由
デフォルトで定義されているアラートでSASのエラー、Web Application Serverのヒープの枯渇など多く情報を収集してくれます。しかも複数サーバ構成でも、SAS Environment Managerのダッシュボードで把握できます。アラートの種類は多くて、経験測に従うよりかは網羅性が高いです。アラートですが、検索で”Service Architecture Alert Definitions"で検索すると一覧が出てきます。負荷テスト、ロングランテストでWeb Application Serverの処理時間やTime Outの件数、クライアント数など豊富な指標(Hyperic HQ用語でメトリックス)が取得できます。SAS固有のメトリックス以外にも、CPU, Free Memoryなども取れます。メトリックスの値はチャートからCSVファイルに保存できますが、 Hyperic HQのコマンドを使って、テキストファイルに抽出することもできます。
負荷テストが求められる規模のシステムであれば、インスト、構成、初期設定の後にSAS Environment Managerを設定して、負荷テストで発生するアラートやメトリックスを点検することをお勧めします。
よくチェックするアラート
アラートの定義は多数ありますが、私がよくチェックしている項目を挙げます。アラートの一覧を知りたければ、検索で"SAS Environment Manager Service Architecture Alert Definitions"で検索すると資料が見つかります。- Webapp CPU Time in Garbage Collection > 30%
- Excessive Time Spent in Garbage Collection
- Webapp Heap Free Memory < 5% of Max
- Workspace Server ERROR message in log
- Logical Workspace Server Timed Out Clients
- Object Spawner ERROR message in log
- Metadata Server ERROR message in log
- SASWork Disk Use % > 95
- SASHome Disk Use % > 95
- SAS License Termination
その他
SASのサービスを起動、停止もできるのですが、他の運用ルールとの兼ね合いがあるので喧伝していません。下手にユーザがサービス上げ下げすると困るから。もちろん、役割を定義してサービスのコントロールを実行できないようにすることも可能です。2018年3月3日土曜日
EGで作ったSASプログラムを、バッチジョブ化する方法
割とよくある話ですが、調べるのに時間が掛かったのでメモしておきます。
EGで作った.SASのプログラムをJP1のようなジョブスケジューラから実行したいということは良くあります。このとき、Metaデータに登録されているライブラリをどうやって定義するのか?
元ネタは以下の記事です。
how to write a .sh file to run a sas program
EGで作った.SASのプログラムをJP1のようなジョブスケジューラから実行したいということは良くあります。このとき、Metaデータに登録されているライブラリをどうやって定義するのか?
元ネタは以下の記事です。
how to write a .sh file to run a sas program
$ /opt/sas/config/Lev1/SASApp/sas.sh -nodms -sysin ~/foo.sas -log ~/foo.log $ grep '論理' ~/foo.log NOTE: ライブラリ参照名SASDATAは論理サーバーから正常に割り当てられました。 NOTE: ライブラリ参照名STPSAMPは論理サーバーから正常に割り当てられました。 NOTE: ライブラリ参照名ACMは論理サーバーから正常に割り当てられました。 NOTE: ライブラリ参照名ARTIFACTは論理サーバーから正常に割り当てられました。 NOTE: ライブラリ参照名EVDMは論理サーバーから正常に割り当てられました。 NOTE: ライブラリ参照名KITSは論理サーバーから正常に割り当てられました。 NOTE: ライブラリ参照名EVDBは論理サーバーから正常に割り当てられました。 $当然ながらPre-Assignされていないライブラリは明示的にSASプログラム内部でLIBNAMEステートメントを書いてください。
2018年2月6日火曜日
登録:
投稿
(
Atom
)
