indsname オプションで、由来元のデータセット名を取得する

9.2になって追加された機能で、これが一番凄い!と何回も言っていて狼少年状態です
例えば

・proc transposeのidステートメントに複数変数を指定可になったのが最高!!
・データセット名にコロンモディファイアで前方一致をかけれるようになったのが最高!!

多分、他にも言っていた気がします。

でも、今回紹介するindsnameも負けず劣らず使える機能です。
例えば以下のような2つのデータセットA Bがあったとします。

data A;
 do X=1 to 5;
  output;
 end;
run;

data B;
 do X=1 to 5;
  output;
 end;
run;

そこから、データを縦結合して
各オブザベーションの由来元がわかるようにする場合

data C;
 set A(in=ina)
     B(in=inb);
 if ina=1 then DS='A';
 if inb=1 then DS='B';
run;


みたいなコード書いていたと思います。 多分。

それがINDSNAMEオプションを使えば

data D;
 set A B indsname=inds;
  DS=inds;
run;
 


となります。

これは結構凄くないですか?ライブラリ名までとれます。
デバックする時やコードレビュー等で、
一体このオブザベーションはどっから来てんだ?みたいなのを手繰っていきたい時ってあると思います。
もしかしたら、長い人生のうち
導出されたデータセットと導出プログラムはあるが、導出仕様書がないといった
悲惨な現場に遭遇することもあるかもしれません。

そんな時に凄い良いです。

これもっとテクニカルニュースとかで取り上げていいんじゃないでしょうか?
僕は海外のコードを見ていて初めて知りました。
日本のSASの情報環境、ちょっとやばいですよね、なんとかしないと









0 件のコメント:

コメントを投稿