SPDエンジンについて、まずはリファレンスを参照ください。
https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/engspde/p0aw8yr81ntdapn1xw6lpn20o1lg.htm
って感じで、分かったような分からないような感じですが、とにかく使ってみましょう。
触った感じ、Base SASエンジンで使えるオプションが一部SPDエンジンで使えなかったり、逆にSPDエンジン専用のオプションが用意されてたりします。
(たとえばfirstobs=オプションはSPDエンジンに無いっぽい。)
とにかく使ってみる。
SAS上で見るとデータセットDT1がひとつ作られたように見えますが、エクスプローラで見ると上記のようにファイルが2つ出来ています。
これらはコンポーネントファイルといって、定義部分とデータ部分に分かれてファイルが作られている事を意味します。
さらにインデックスを定義していればインデックス用のコンポーネントファイルも作られます。
何気に便利な暗黙ソート
普通BYステートメントを含む処理は、事前にSORTプロシジャで並べ替えとく必要がありますが、SPDエンジンの場合はそれが不要なんです!
BYSORT= LIBNAMEステートメントオプション
https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/engspde/p1oeyuoie0h44vn11fxanawndqwz.htm
例
変数Aの順に並んでないのに、「by A;」を含むMEANSやTRANSPOSEが動いちゃいます。
おまけにユーティリティファイルスペースを使用して並び替えられるので、DT1は上書きされず元の並び順のままです。
以上、触りなのでこの辺までとします。
実際に利用する場合は、細かい設定や注意点などがあるので、まずはリファレンスをご確認下さい。
上記リファレンスの説明をかいつまむと、
・ high-performance data delivery用に設計
・ データを合理化されたファイル形式に編成 ・ 並列処理 ・ 非常に大きなデータセットの処理を高速化。 |
って感じで、分かったような分からないような感じですが、とにかく使ってみましょう。
(たとえばfirstobs=オプションはSPDエンジンに無いっぽい。)
SAS上で見るとデータセットDT1がひとつ作られたように見えますが、エクスプローラで見ると上記のようにファイルが2つ出来ています。
これらはコンポーネントファイルといって、定義部分とデータ部分に分かれてファイルが作られている事を意味します。
さらにインデックスを定義していればインデックス用のコンポーネントファイルも作られます。
普通BYステートメントを含む処理は、事前にSORTプロシジャで並べ替えとく必要がありますが、SPDエンジンの場合はそれが不要なんです!
BYSORT= LIBNAMEステートメントオプション
https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/engspde/p1oeyuoie0h44vn11fxanawndqwz.htm
例
libname sp spde "任意のパス";
data sp.DT1; input A B; cards; 2 11 1 22 1 33 2 44 ; run; proc means data=sp.DT1; var B; by A; run; proc transpose data=sp.DT1 out=sp.OUT1; var B; by A; run; |
変数Aの順に並んでないのに、「by A;」を含むMEANSやTRANSPOSEが動いちゃいます。
おまけにユーティリティファイルスペースを使用して並び替えられるので、DT1は上書きされず元の並び順のままです。
ちなみに、データステップやプロシジャの出力先にご注意下さい。
(例えば、上の例のTRANSPOSEで「OUT=」にBase SASエンジンのライブラリを出力先にした場合、Base SASエンジンのデータセットとして出力されます。
その辺の挙動もご留意下さい。
以上、触りなのでこの辺までとします。
実際に利用する場合は、細かい設定や注意点などがあるので、まずはリファレンスをご確認下さい。
0 件のコメント:
コメントを投稿