2014年6月18日水曜日

UPDATEステートメント入門


最近UPDATEステートメントにはまってます。
「データステップ100万回(UPDATEステートメントを使ってみる)」から興味を持ち始めたのですが色々面白いことが出来そうなので、こちらでも基礎から応用例まで紹介したいと思います。


基本構文
data  結果データセット ;
  update  マスターデータ  トランザクションデータ ;
  by   BY変数;
run;


MERGEと似たような動作で、マスターをトランザクションデータで更新します。
異なる点は以下4点で、UPDATEステートメントを使いこなすうえで重要なルールとなります。

① BYステートメントは必須。
② マスター側はBY値が重複するオブザベーションがあったらダメ。
③ トランザクション側はBY値が重複していてもOK。(トランザクション側の値を上から順にマスターへ更新していく)
④ トランザクション側の値が欠損値の場合は更新しない。(MERGEだと欠損値になる)



分かりづらいと思うのでまず以下のサンプルを見てみましょう。

*** マスターデータ作成 **********;
data DT1;
input A B;
cards;
1 1
2 1
3 .
;
run;

*** トランザクションデータ作成 ****;
data DT2;
input A B;
cards;
1 .
2 20
2 30
3 20
4 20
;
run;

*** トランザクションデータを使ってマスターを更新 *****;
data DT3;
   update DT1 DT2;
   by A;
run;


  A    B  
   1    1
   2  30 
   3  20 
   4  20 



具体的には以下のような処理の流れになります。
上の方で説明したUPDATEステートメントのルール①~④と照らし合わせて見てみましょう。

0 件のコメント:

コメントを投稿