SASデータセットの容量を計算する

[OS]ALL
[リリース] 6.07, 6.08, 6.09, 6.10
[キーワード] base, datastep, disk, size, sasdataset, dummy, contents, pagesize, obs

[質問]

SASデータセットが必要とするディスク容量を調べています。「SASランゲージ リファレンスガイド; Release 6.03 Edition」には、

  (216+(v*106))+(nobs*(tvl+4))
で計算できるとありますが、実際に計算してみるとファイルの大きさとあいません。 どのように計算すればよいのでしょうか。

[回答]

御覧いただいたマニュアルは、古いバージョンのSASについて書かれたもので、 SAS 6.07以降ではあてはまりません。 実際のファイルのサイズに近い値を求めるには、以下の方法で計算してください。

  1. 1オブザベーションのダミーのSASデータセットを作成し、CONTENTSプロシジャを実行します。この時、作成する変数の数、タイプ、長さなどは、実際に作成する SASデータセットと同一にします。
           data dummy;
              length var1-var10 > 10 num1-num5 8;
           run;
           
           proc contents; run;
           

  2. CONTENTSプロシジャの結果から、次の値を確認します。
    1. データセットのページサイズ
    2. ページごとの最大OBS数

  3. 2で確認した値と実際に作成するSASデータセットの情報をもとに、ディスク容量を計算します。
    1. data_page_size=実際に作成するSASデータセットのOBS数/ページごとの最大OBS数
      (小数点以下は切り上げ)
    2. ディスク容量=8192+(データセットのページサイズ*data_page_size)
      8192 はBUFSIZE= データセットオプションにより可変ですが通常これ以下の値となります。(単位:byte)