1%macro irmst_calculate_agg_bep_value( ds_in =
3 , ds_in_agg_rules_enrchd =
22 %irm_get_vars_where_cond(ds_in = &ds_in_agg_rules.
23 , where_vars_col = src_where_vars
24 , var_list = src_keep_var
29 select count(c.src_col) , c.src_col
30 into :n_src_var_cols , :src_var_cols separated by
' '
31 from (select distinct src_col
32 from &ds_in_agg_rules_enrchd.) as c;
34 select count(c.aggregation_rule) , c.aggregation_rule
35 into :n_agg_types , :agg_types separated by
' '
36 from (select distinct aggregation_rule
37 from &ds_in_agg_rules_enrchd.) as c;
39 select count(c.weight_var) , c.weight_var
40 into :n_weights , :weight_vars separated by
' '
41 from (select distinct weight_var from &ds_in_agg_rules. )as c;
44 %
do j = 1 %to &n_weights.;
46 select distinct src_col into: tmp_var_stmt_&j. separated by
' '
47 from &ds_in_agg_rules_enrchd. WHERE weight_var=scan(
"&weight_vars.",&j.,
' ');
50 call symputx(
"vars_stmt_&j.",cats(
"&&tmp_var_stmt_&j..",
' /',
'weight = ',scan(
"&weight_vars.",&j.,
' ')));
55 length temp_stmt $2000.;
56 do i = 1 to &n_agg_types.;
57 agg_type=scan(
"&agg_types.",i,
' ');
58 temp_stmt_l=trim(agg_type)||
'('||
"&src_var_cols"||
')';
59 do ii = 1 to &n_src_var_cols.;
60 src_col=scan(
"&src_var_cols",-ii,
' ');
61 temp_stmt_r=trim(src_col)||
'_'||trim(agg_type);
62 temp_stmt=trim(temp_stmt_r)||
' '||trim(temp_stmt);
64 temp_stmt=trim(temp_stmt_l)||
'='||temp_stmt;
66 call symputx(
'agg_type_out_stmt',trim(temp_stmt));
70 proc summary data = &ds_in.;
71 class FORECAST_TIME &src_keep_var.;
72 %
if &n_weights. > 0 %then %
do;
73 %
do jj = 1 %to &n_weights.;
74 vars &&vars_stmt_&jj..;
75 %let tmp_w_var = %trim(%scan(&&tmp_var_stmt_&jj..,1,
' '));
76 %
if &jj = 1 %then %
do;
77 %let src_var_cols_fnl_&jj = %sysfunc(tranwrd(&src_var_cols.,&tmp_w_var.,%str()));
80 %let inx = %eval(&jj.-1);
81 %let src_var_cols_fnl_&jj = %sysfunc(tranwrd(&&src_var_cols_fnl_&inx..,&tmp_w_var.,%str()));
83 %
if &jj. = &n_weights. %then %
do;
84 %let src_var_cols_fnl = &&src_var_cols_fnl_&jj.;
89 %let src_var_cols_fnl = &src_var_cols.;
90 vars &src_var_cols_fnl.;
91 output out = &ds_out. (drop=_TYPE_ _FREQ_) &agg_type_out_stmt.;