The Nameless City

何故か製薬やSAS関連のブログ、の予定。

SASデータセットでストレージが圧迫されて困る人へのTips。もう少し深めに。

「○○ではサイズがちょっとだったのに、SASデータセットにすると大きくなる」というのは、あるあるなので。
その予断を地上から消し去りたい。
SASデータセットでストレージが圧迫されて困る人へのTips - The Nameless City

SASの固定長文字列型という所が悪さする事がある。

固定長文字列型の長さとしては1~32767バイトまで定義出来る。他システムで長さを定義しなくていい可変長文字列型のデータをSASに取り込む際には32767バイトに拡張される事がある。

大体はIMPORTプロシージャの設定を見直してほしい。

Technical Support:IMPORTプロシジャでCSVファイルを読み込む際の文字切れを回避する
http://www.sas.com/offices/asiapacific/japan/service/help/pdf/v94/proc.pdf
テキストファイルのインポートの場合に、私はIMPORTプロシージャをまず使わないが。
余談だが、

文字列型で本当に保存するべき項目か考えてほしい。

SASの数値型は倍精度浮動小数点型であり、整数型がないので不安になる事もあるだろうが、有効桁数としては十進数でおおよそ15桁ある。
最悪、二つの変数に分割したとしても、文字型で持つよりは圧倒的に小さい。
また、カーディナル値が低い文字型の変数の場合には、おおよそ分類用の変数なのだから、SASフォーマットを利用する事を考えてほしい。
内部的には数値あるいは文字でコード値を持ち出力時にはラベルを出力する、という事が簡単に出来る(統計プロシージャでも対応している)。
このSASフォーマット、サーバで利用している場合にはちょっと対応が難しい(GUIが認識するように設定するのが結構面倒臭くてまたそれ用のフォルダが固定でサーバで一つなので利用しづらい)が、他の場合には、RDBMSと同様にマスタテーブルを作る事でだいぶマシになる。


SDTMのTerminologyがなんでコード値持って格納するような形式になっていないのかは、正直謎なんだが、コードのテーブルがガンガン変更されると悲惨だから、なのかねえ。でも無駄だと思うんだけど。
そもそもSAS V5のxport形式にする意味がわからんよなあ・・・・・・

ちょっとずつレコードを処理して「試して」から実行してほしい。

特にSASサービスを立てている場合。途中で変なキャンセルとか効かないので。
レコード数を絞るオプションとか色々あるやん?

正規化されたテーブルからビューを作って実行する事を考えてほしい。

SASのデータステップはビューとして置く事が出来る。無論SQLもビューにする事は出来るんだが。

データの根本の所から絞り込みしてほしい。

SAS/ACCESS~の製品は、各製品と連携して絞込や簡単な集計とかは、データベースなどに実行させてSASから取得する事が出来る。
データの移送量を減らすとかなり快適だと思うんだがなあ。

集約すると。

もう少し設計の観点を持って頂くと大変助かる。