そろそろ,いいかなぁって.
アメリカの某SASの集まりで発表して賞取ったネタ.
通常hashのdataset:で指定するものは,データステップ開始時点で存在しているデータセット(ビュー)でなければいけないが,dusubl関数でのコード実行のみ,ステップ開始後の生成で間に合ってしまうという話.
マクロ化すれば,様々なサブセットや,SQLクエリの抽出結果からそのままデータ取得をいくらでもやり放題という技術.
結構,劇的に開発効率をあげれる(少なくとも私自身は)技術で重宝している
data output;
set sashelp.class;
if _N_ = 1 then do;
rc=dosubl("proc sql noprint;
create view v1 as
select sex ,mean(age) as age_mean
from sashelp.class
group by sex;
quit;");
drop rc;
declare hash h1(dataset:"v1");
h1.definekey("sex");
h1.definedata("age_mean");
h1.definedone();
end;
if h1.find() ne 0 then call missing(age_mean);
run;