ミスを起こしやすい仕様があるので落とし穴の記事も必ず参照下さい!
以下をご覧ください
「SQLビュー」には、データセットではなく、定義したSELECT文が保存されます。
SQLビューを開いたり、参照すると、定義したSELECT文が実行されて結果のデータが返ってくる仕組みになっています。
構文
PROC SQL;
CREATE VIEW ビュー名 AS SELECT文
QUIT; |
ビューの定義を見たい場合は DESCRIBE VIEW を使います。
proc sql;
describe view MYVIEW;
quit;
ログ
NOTE: SQLビューは WORK.MYVIEW は次のように定義されています :
select NAME, AGE
from SASHELP.CLASS;
|
ちなみにビューを削除したい場合は DROP VIEW を使います。
proc sql;
drop view MYVIEW;
quit;
|
便利なのが
たとえば、以下のようにデータセット MYLIB.DT1 を参照している MYLIB.VW というビューを作ったとします。
proc sql;
create view MYLIB.VW as
select A+B as C
from MYLIB.DT1;
quit;
|
そしてこのビューを使って翌日 PROC MEANS を実行したいとします。
proc means data=MYLIB.VW;
var C;
run;
|
しかし翌日、ビューが参照している MYLIB.DT1 に値の変更が発生したとします。
この場合、再度ビューを作り直す必要はありません。
なぜなら、以下のように
proc means data=MYLIB.VW;
var C;
run;
|
ビューを参照するだけで、内部で最新の MYLIB.DT1 に対してSELECT文が実行され、その結果に対してMEANSが実行されるからです。
またメリットとして、ビューの中身は定義なのでファイルサイズは小さいです。
ただし、プログラム中に何回も同じ中身のビューを参照するような状況では、参照するたびに内部でSELECT文が実行される事になるので、処理効率が悪くなります。
ただし、プログラム中に何回も同じ中身のビューを参照するような状況では、参照するたびに内部でSELECT文が実行される事になるので、処理効率が悪くなります。
次回は「落とし穴編」
0 件のコメント:
コメントを投稿