まずはDATAステップビューについて説明して、次の記事で落とし穴を紹介(記事の最後にリンク貼ってます)
以下をご覧ください
上で作成した DSVIEW は一見データセットに見えますが、「DATAステップビュー」というもので、以下が保存されます。
このDATAステップビューを開いたり、参照すると、コンパイルしたプログラムが実行されて結果のデータが返ってくる仕組みになっています。
構文
ビューの定義を見たい場合は以下のように書きます。
DATAステップビューのメリット
たとえば、以下のようにデータセット MYLIB.DT1 を参照している MYLIB.STAT1 というビューを作ったとします。
しかし翌日、ビューが参照している MYLIB.DT1 に値の変更が発生したとします。 この場合、再度ビューを作り直す必要はありません。
ミスを起こしやすい仕様があるので落とし穴の記事も必ず参照下さい!
以下をご覧ください
上で作成した DSVIEW は一見データセットに見えますが、「DATAステップビュー」というもので、以下が保存されます。
- コンパイルしたDATAステップのプログラム
- 変数の型やLENGTHといった属性情報
このDATAステップビューを開いたり、参照すると、コンパイルしたプログラムが実行されて結果のデータが返ってくる仕組みになっています。
構文
DATA ビュー名 / VIEW = ビュー名; ~ プログラム ~
RUN;
|
ビューの定義を見たい場合は以下のように書きます。
data view=DSVIEW;
describe; run;
ログ
NOTE: DATAステップビューWORK.DSVIEWの定義:
data DSVIEW / view=DSVIEW; set SASHELP.CLASS; keep NAME AGE; run; |
たとえば、以下のようにデータセット MYLIB.DT1 を参照している MYLIB.STAT1 というビューを作ったとします。
data MYLIB.STAT1 / view=MYLIB.STAT1; set MYLIB.DT1; C = A + B; run; |
そしてこのビューを使って翌日 PROC MEANS を実行したいとします。
proc means data=MYLIB.STAT1; var C; run; |
なぜなら以下のように、
proc means data=MYLIB.STAT1; var C; run; |
ビューを参照するだけで、内部で最新の MYLIB.DT1 に対してビューに保存されたデータステップのプログラムが実行され、その結果に対してMEANSが実行されるからです。
またメリットとして、ビューの中身は定義なのでファイルサイズは小さいです。
ただし、プログラム中に何回も同じ中身のビューを参照するような状況では、参照するたびに内部でデータステップのプログラムが実行される事になるので、処理効率が悪くなります。
ただし、プログラム中に何回も同じ中身のビューを参照するような状況では、参照するたびに内部でデータステップのプログラムが実行される事になるので、処理効率が悪くなります。
次回は「落とし穴編」
0 件のコメント:
コメントを投稿