データセットのサイズを見積もる方法

[OS] ALL
[リリース] 8.2
[キーワード] SAS 8, CONTENTS, FILE SIZE, DATASET

[質問]

新規に作成するデータセットに必要なディスク容量を推定するために、データセットのサイズを見積もる計算式はありますか。

[回答]

データセットのサイズは、下記の計算式で概算することができます。

equation

新規に作成するデータセットのサイズを見積もる場合には、まず必要な変数を含む1オブザベーションのみのダミーのデータセットを作成します。そしてこのデータセットに対しCONTENTSプロシジャを実行します。


                                 /* サンプルデータセットを作成 */
DATA test ;
  INPUT a b c d e ;
CARDS;
1 2 3 4 5
;
RUN;
                                    /* CONTENTSプロシジャを実行 */
PROC CONTENTS DATA=test ;
RUN;

CONTENTSプロシジャの出力結果から、「ページごとの最大オブザベーション数」と「ページサイズ」が分かります。以下はCONTENTSプロシジャの出力結果の一部を抜粋したものです。


-----エンジン/ホスト関連情報 -----

 データセットのページサイズ: 4096
 データセットのページ数:     1
 データページの先頭:         1
 ページごとの最大 OBS 数:    101
             ・
             ・

データセットの「ヘッダー部分のサイズ」は、Windows版では256バイト、UNIX版では8K(=8*1024)バイトです。これらの数値と想定するオブザベーション数を、最初に示した計算式に代入すると、新規に作成するデータセットのサイズを概算できます。

Windows版 SASで、上記サンプルデータセットTESTと形式が同様でオブザベーション数が1000と仮定したデータセットのおよそのサイズは、次のようなプログラムで算出できます。


                                  /* データセットのサイズを計算 */
DATA _null_ ;
  pagenum = 1 + FLOOR(1000/101) ;
  datasize = 256 + (pagenum*4096) ;
  PUT datasize= ;
RUN;

ログに datasize=41216 と表示されます。計算したデータセットのおよそのサイズが41,216バイトくらいになることを表しています。