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が出力されます。
  • 世代データセットや、外部キーを設定したデータセットなど、特殊なデータセットを削除する際の挙動についてはリファレンスをご確認下さい。

3 件のコメント:

  1. こんにちは。お世話になっています。
    このプロシジャはProc datasetsのdeleteステートメントが格上げになってプロシジャになったという感じなのでしょうか?
    最近,色々出ていて,ついていけるか心配です(苦笑)

    返信削除
  2. こんにちは、こちらこそお世話になっています!

    >このプロシジャはProc datasetsのdeleteステートメントが格上げになってプロシジャになったという感じなのでしょうか?
    私自身も、なんとなくそんなイメージだと思ってます。
    ただproc datasetsとは挙動が若干異なっていて、まだ使い勝手が悪い部分もあるので、今後に期待といったところですかね。

    (今年はブログやSAS掲示板やらでお世話になりました。来年もどうぞよろしくお願いいたします!)

    返信削除
  3. あけましておめでとうございます。少し風邪をひいていて,かなり遅くなりましたが,レスありがとうございました。
    よかった。私の理解で良さそうなのでほっとしています(苦笑)

    返信削除