1%macro irmst_apply_aggregation(ds_in_bep_summary =
15 data work.data_extraction_config;
16 set &ds_in_bep_summary. (keep = planningDataKey dataDefSchemaName)
23 source_data_name = dataDefSchemaName;
24 analysis_data_key = planningDataKey;
27 call symputx(cats(
"planning_data_", put(_N_, 8.)), dataDefSchemaName,
"L");
29 if last then call symputx(
"n_data", _N_,
"L");
33 %let out_libref_tmp = &out_libref.;
36 %irm_rgf_retrieve_data(dr_libref = &dr_libref.
37 , dr_library_name = &dr_library_name.
38 , ds_in = work.data_extraction_config
39 , ds_out = work.export_summary
41 , rgf_protocol = &rgf_protocol.
42 , rgf_host = &rgf_host.
43 , rgf_service = &rgf_service.
44 , rgf_solution = &rgf_solution.
45 , rgf_port = &rgf_port.
46 , tgt_ticket = &tgt_ticket.
50 %let out_libref = &out_libref_tmp.;
54 set &ds_in_bep_summary. (obs = 1);
55 call symputx(
"n_forecast_time", intervalCount,
"L");
60 %
do i = 1 %to &n_data;
65 data work.ds_in_agg_rules_fltrd;
66 set &ds_in_agg_rules.;
67 where upcase(TGT_TABLE_SCHEMA_NM) = upcase(
"&&planning_data_&i..");
71 select distinct tgt_tbl_val_col ,tgt_tbl_val_col
72 into: tgt_cols separated by
' ' ,: empty_tgt_cols separated by
'=.;'
73 from work.ds_in_agg_rules_fltrd;
75 %
do m=1 %to %sysfunc(countw(&tgt_cols.,
' '));
76 %let var_exist=%rsk_varexist(work.&&planning_data_&i.., %scan(&tgt_cols.,&m.,
' '));
77 %
if &var_exist.=0 %then %
do;
79 alter table work.&&planning_data_&i.. add %scan(&tgt_cols.,&m.,
' ') num(8);
84 select distinct tgt_tbl_id_col, count(tgt_tbl_id_col)
85 into: tgt_cols_id separated by " ", : n_tgt_tbl_id_cols
86 from (select distinct tgt_tbl_id_col from work.ds_in_agg_rules_fltrd)
91 %let del= %str(%'),%str(%');
92 %if &n_tgt_tbl_id_cols. >0 %then %do;
93 %do ii=1 %to &n_tgt_tbl_id_cols.;
96 call symputx("temp_tgt_col_id_&ii.",scan("&tgt_cols_id",&ii.," "));
100 select tgt_tbl_id_val into: tgt_id_whr_cond separated by "&del."
101 from work.ds_in_agg_rules_fltrd
102 where tgt_tbl_id_col="&&temp_tgt_col_id_&ii..";
106 call symputx("in_clause_&ii.","&&temp_tgt_col_id_&ii.. in ('&tgt_id_whr_cond.')");
110 length tmp_in_stm $30000.;
111 %do k=1 %to &n_tgt_tbl_id_cols.;
112 tmp_in_stm=catx(' or ', trim(tmp_in_stm), "&&in_clause_&k");
114 call symputx('fnl_in_stmnt',trim(tmp_in_stm));
117 create table &out_libref..&&planning_data_&i..
118 like work.&&planning_data_&i..;
120 %do j = 1 %to &n_forecast_time.;
121 data work.temp_planning_data;
122 set work.&&planning_data_&i..;
123 forecast_horizon = &j.;
125 where &fnl_in_stmnt.;
127 proc append base = &out_libref..&&planning_data_&i.. data = temp_planning_data;
133 create table &out_libref..&&planning_data_&i..
134 like work.&&planning_data_&i..;
140 %irm_get_vars_where_cond(ds_in = work.ds_in_agg_rules_fltrd
141 , where_vars_col = src_where_vars
142 , var_list = src_keep_vars
146 %irmst_apply_agg_bep( ds_in_agg_values = &ds_in_agg_values.
147 , ds_in_agg_rules = work.ds_in_agg_rules_fltrd
148 , src_keep_var_list = &src_keep_vars.
149 , ds_out_agg_result = &out_libref..&&planning_data_&i..