26%macro irmst_apply_agg(ds_in_agg =
28 , ds_in_agg_rules_config =
40 distinct(upcase(TGT_TBL_VAL_COL))
42 : agg_vars separated by
' '
44 &ds_in_agg_rules_config.
50 set &ds_in_tgt.(drop=&agg_vars.);
55 %
do i = 1 %to %rsk_attrn(&ds_in_agg_rules_config., nlobs);
57 data _tmp_rule_pre_agg;
59 set &ds_in_agg_rules_config. point=pt;
60 call symputx(
"TGT_TBL_ID_COL&i.", TGT_TBL_ID_COL,
"L");
61 call symputx(
"TGT_TBL_ID_VAL&i.", TGT_TBL_ID_VAL,
"L");
62 call symputx(
"TGT_TBL_VAL_COL&i.", TGT_TBL_VAL_COL,
"L");
63 call symputx(
"SRC_COL&i.", SRC_COL,
"L");
64 call symputx(
"SRC_WHERE_COND&i.", SRC_WHERE_COND,
"L");
65 call symputx(
"AGGREGATION_RULE&i.", AGGREGATION_RULE,
"L");
72 create table _tmp_rule_w_agg as
79 &&TGT_TBL_ID_COL&i. =
"&&TGT_TBL_ID_VAL&i."
86 &&SRC_WHERE_COND&i. and
87 AGGREGATION_RULE = "&&AGGREGATION_RULE&i." and
88 SRC_COL = "&&SRC_COL&i."
89 ) as &&TGT_TBL_VAL_COL&i.
96 data _tmp_rules_w_agg;
98 %if %rsk_dsexist(_tmp_rules_w_agg) %then %do;
106 proc sort data=_tmp_rules_w_agg;
111 data &ds_out_agg.(drop=__row_num__);
112 merge _tmp_ds_out_agg(in=in_tgt)