ラベル プロシジャ: DELETE の投稿を表示しています。 すべての投稿を表示
ラベル プロシジャ: DELETE の投稿を表示しています。 すべての投稿を表示

2016年12月10日土曜日

SASデータセットを削除するDELETEプロシジャ



SAS9.4から正式に使えるようになったDELETEプロシジャを紹介します。

以前のバージョンでも、マニュアルに載ってないけど実は使えるっていう、知る人ぞ知るプロシジャでした。
正式に認めてもらえるまで大分時間がかかったけど、やっと表舞台に立てて感無量ですね。

このプロシジャでSASデータセットを削除することが出来ます。



以下、SASデータセットを削除する例をいくつか見ていきましょう。


* サンプルデータ作成 ;
data DT1 DT2 DT3 DT4 DT5 DT6 DT7 DT8;
run;


* ① WORKライブラリの DT1 と DT2 を削除 ;
proc delete lib=WORK data=DT1 DT2;
run;

* ② WORKライブラリの DT3~DT5 を削除 ;
proc delete lib=WORK data=DT3-DT5;
run;

* ③ WORK.DT6 を削除 ;
proc delete data=WORK.DT6;
run;

* ④ WORKライブラリの全データセットを削除 ;
proc delete data=WORK._ALL_;
run;

①と②はSAS9.4から可能になった書き方です。


データセット以外のSASファイルを削除する場合は「MEMTYPE=」で削除するデータのタイプを指定します。例えば、以下 DT20, DT21 というVIEWがあったとして、、


data DT20 / view=DT20;
run;
data DT21 / view=DT21;
run;


以下のように書いて削除します。

proc delete lib=WORK data=DT20 DT21 (memtype=view);
run;


ちなみに1回のPROC DELETEで削除できるデータのタイプは1種類のみで、「VIEWとデータセットをいっぺんに削除」みたいな事は出来ませんでした。



注意点

  • 存在しないデータセットを削除しようとするとログにWARNINGが出力されます。
  • 世代データセットや、外部キーを設定したデータセットなど、特殊なデータセットを削除する際の挙動についてはリファレンスをご確認下さい。

2014年5月13日火曜日

CONTENTS,DELETEプロシジャでは「ライブラリ名._ALL_」という書き方が出来る。



CONTENTSとDELETEプロシジャではDATA = ライブラリ名._ALL_という書き方があるのをご存知でしょうか。
どういったものか、例をみていきましょう。



使用するダミーデータを作成

data DT1 DT2 DT3;
  A=1;
run;



「ライブラリ名._ALL_」と指定してみる

*** 1. CONTENTSプロシジャの例 ;
proc contents data=WORK._ALL_ out=OUTC  noprint;
run;

・指定したライブラリにある全てのデータセットとVIEWのコンテンツ情報を取得して、データセットに出力することが可能。



*** 2. DELETEプロシジャの例 ;
proc delete  data=WORK._ALL_;
run;

・指定したライブラリにある全データセットを削除することが可能。