SASのテーブルビュー(view)について

ビュー(射影)は、データセットから作成される仮想的なデータセットです。
実際にデータセットとして実在しておらず、見方を定義したものだと考えてください
MS-ACCESSとかでいうと、クエリです。

ビューを開くと、定義されたコードが実行され、実行結果が普段のデータセットと同じようにみれます。複雑な抽出を経なければ作れないデータセットを、毎回、参照したいと思うたびに作成するのは時間とディスク容量の大きな無駄です。

一度組んだら後はダブルクリックで開くだけで常に最新のデータで反映された結果を見たいです。
そんな夢の技術がviewです。

ビューのメリットについてSAS Advanceの公式テキストでは以下のように挙げています。

・often save space(a view usually quite small compared with the data that it access)
・prevent users from continually submitting quaries to omit unwanted columns or rows
・ensure that input data sets are always current,because data is derived from tables at execution time
・shield sensitive or confidential columns from users while enabling the same users to view other columns  in the same table
・hide complex joins or queries from users

ですって。



今、以下の2つのデータセットがあったとします。
data Q1;
X=1;Y=1;Z=2;output;
X=2;Y=1;Z=2;output;
X=3;Y=1;Z=2;output;
X=4;Y=1;Z=2;output;
run;








data Q2;
X=3;A=5;
run;





Q1にQ2をXをキーにして結合したデータをみるためのVIEWをつくります


【SQLで作る方法】
proc sql noprint;
 create view V1 as
  select Q1.*,Q2.A
  from Q1 left outer join Q2
   on Q1.X=Q2.X;
quit;

です。単にcreate tableのtableをviewにかえるだけです。
すると、いかのようなのができて













こいつをクリックすると







です。

ちなみにふつうはWORKのデータセットを参照するようなビューは作りませんし、
ビュー自体もWORKにつくったりしません。
再利用するものなので普通は永久ライブラリを使います。

ちなみに作ったビューは

data A1;
 set V1;
run;



proc means data=V1;
run;

のように通常のデータセットと同じように扱えます。
(ただし、それ自体を普通のデータステップと同じように変更したりはできないなど
制限はあります。)

【データステップで作る方法】
data V2/view=V2;
 merge Q1(in=ina)
       Q2;
    by X;
    if ina;
run;

簡単ですね

0 件のコメント:

コメントを投稿