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 秒
コメント
コメントを投稿