proc sql feedback - select句 * を展開したり、SASビューの定義をログに表示する - SAS
proc sql の feedback オプションについてのご紹介です。
テストコード 1 - proc sql feedback
options msglevel=i ; /* テストデータ */ data TEST ; STR = "TEST" ; do I=1 to 1E5 ; R = ranuni(1) ; G = mod(I, 10) ; output ; end ; run ; %let TABLE_NAME = TEST ; proc sql feedback ; create table TEST1 as select * from &TABLE_NAME. /* コメント */ ; quit ;
NOTE: Statement transforms to: の後に、SELECT句の * が展開された形で、SELECT文がログに表示されます。マクロ変数も展開され、コメントは削除されます。
71 proc sql feedback ; 72 create table TEST1 as 73 select * 74 from &TABLE_NAME. /* コメント */ 75 ; NOTE: Statement transforms to: select TEST.STR, TEST.I, TEST.R, TEST.G from WORK.TEST; NOTE: テーブルWORK.TEST1(行数100000、列数4)が作成されました。 76 quit ; NOTE: PROCEDURE SQL処理(合計処理時間): 処理時間 0.03 秒 CPU時間 0.04 秒
テストコード 2 - proc sql feedback : SQLビューを表示できます。
/* テストデータ2 */ data IDX ; G = 1 ; NOTE = "テスト1" ; G = 2 ; NOTE = "テスト2" ; G = 3 ; NOTE = "テスト3" ; run ; proc sql feedback ; create view V1 as select * from TEST1 ; create table TEST2 as select I+1 as I2 ,V1.* from V1 left join IDX on V1.G = IDX.G ; quit ;
SQLビューがあると、その定義内容もログに表示されます。
85 proc sql feedback ; 86 create view V1 as 87 select * 88 from TEST1 89 ; NOTE: SQLビューは WORK.V1 定義されました。 90 create table TEST2 as 91 select I+1 as I2 92 ,V1.* 93 from V1 94 left join IDX 95 on V1.G = IDX.G 96 ; NOTE: Statement transforms to: select TEST1.I + 1 as I2, TEST1.STR, TEST1.I, TEST1.R, TEST1.G from ( select TEST1.STR, TEST1.I, TEST1.R, TEST1.G from WORK.TEST1 ) left outer join WORK.IDX on TEST1.G = IDX.G; NOTE: SASスレッドソートを使用します。 NOTE: テーブルWORK.TEST2(行数100000、列数5)が作成されました。 97 quit ; NOTE: PROCEDURE SQL処理(合計処理時間): 処理時間 0.12 秒 CPU時間 0.13 秒
テストコード 3 - proc sql feedback : DATA STEP ビューは展開されない
data TEST_V / view=TEST_V ; set TEST1 ; A = 1 ; run ; proc sql feedback ; create table TEST3 as select * from TEST_V ; quit ;
describe view でもそうでしたが、DATA STEPビューは展開されないようです。
61 proc sql feedback ; 62 create table TEST3 as 63 select * 64 from TEST_V 65 ; NOTE: Statement transforms to: select TEST_V.STR, TEST_V.I, TEST_V.R, TEST_V.G, TEST_V.A from WORK.TEST_V; NOTE: ビュー WORK.TEST_V.VIEW処理(合計処理時間): 処理時間 0.06 秒 CPU時間 0.07 秒 NOTE: データセットWORK.TEST1から100,000オブザベーションを読み込みました。 NOTE: テーブルWORK.TEST3(行数100000、列数5)が作成されました。 66 quit ; NOTE: PROCEDURE SQL処理(合計処理時間): 処理時間 0.10 秒 CPU時間 0.08 秒
コメント
コメントを投稿