25%macro irmst_get_required_mdl_vars(
28 output_table = work.portfolio_vars,
29 outpath = %sysfunc(pathname(work)),
39 outds = work._tmp_workgroups_,
57 %irm_rest_set_mip_workgroup(host = &host.
60 , workgroup = &workgroup.
61 , authMethod = &authMethod.
62 , tgt_ticket = %superq(tgt_ticket)
64 , outVarTicket = &outVarTicket.
65 , outSuccess = &outSuccess.
66 , outResponseStatus = &outResponseStatus.
68 , restartLUA = &restartLUA.
69 , clearCache = &clearCache.
75 %
if %qupcase(&debug.) eq FALSE %then
77 %else %if %qupcase(&debug.) eq TRUE %then
83 %if %quote(&model_group_sk) eq %then
85 %put ERROR: model_group_sk(s) not specified.;
93 create table &output_table(
95 model_group varchar(32),
96 variable varchar(32767)
103 %do j = 1 %to %sysfunc(countw(&model_group_sk));
104 %let _mg_sk = %scan(&model_group_sk, &j);
106 %put NOTE: Processing model group &j of %sysfunc(countw(&model_group_sk)) (model_group_sk = &_mg_sk). >>>;
110 %irm_rest_get_ticket(
111 url = &mipurl/rest/modelGroups/&_mg_sk,
113 tgt_ticket = %superq(tgt_ticket),
114 outVarTicket = service_ticket,
115 %if %qupcase(&_debug_.) ne NO %then
121 filename mgjson temp;
123 proc http url = "&mipurl/rest/modelGroups/&_mg_sk?%str(&)ticket=&service_ticket"
127 %if %qupcase(&_debug_.) ne NO %then
131 headers "Accept" = "application/json"
132 "Content-Type" = "application/json";
135 libname mg_json JSON fileref = mgjson;
138 select name into :model_group_nm trimmed
140 where
id eq "&_mg_sk";
146 %if %rsk_dsexist(mg_json.modelgroupmodels_model) %then
149 select
id into :model1-
150 from mg_json.modelgroupmodels_model;
153 %let num_models = &sqlobs;
160 filename mgjson clear;
161 libname mg_json clear;
167 create table work.model_variable_metadata(
169 textExpression varchar(2048)
173 %do i = 1 %to &num_models;
174 %put NOTE: Extracting model &i of &num_models: &&model&i..;
176 %irm_rest_get_ticket(
177 url = &mipurl/rest/models/&&model&i,
179 tgt_ticket = %superq(tgt_ticket),
180 outVarTicket = service_ticket,
181 %if %qupcase(&_debug_.) ne NO %then
187 filename mdljson temp;
189 proc http url = "&mipurl/rest/models/&&model&i?%str(&)ticket=&service_ticket"
193 %if %qupcase(&_debug_.) ne NO %then
197 headers "Accept" = "application/json"
198 "Content-Type" = "application/json";
201 libname mdl_json JSON fileref = mdljson;
207 %if %rsk_varexist(mdl_json.variables, name) %then
210 create table work.model_&&model&i as
213 from mdl_json.variables;
216 proc append base = work.model_variable_metadata
217 data = work.model_&&model&i
223 filename mdljson clear;
224 libname mdl_json clear;
228 in_table = work.model_variable_metadata,
229 out_filter_variable_table = work.filter_variable_nm,
235 in_table = work.model_variable_metadata,
236 out_filter_variable_table = work.filter_variable_expression,
237 variable = textExpression,
245 %irmst_export_mip_udl(
247 model_group_sk = &_mg_sk,
251 mipurl = %superq(mipurl),
252 tgt_ticket = %superq(tgt_ticket)
255 filename udl "&outpath&pathsep&model_group_nm..sas";
261 %let tempfile = &outpath&pathsep.mprint_&model_group_nm..sas;
263 %let rc = %sysfunc(filename(fref, &tempfile));
264 %if &rc = 0 and %sysfunc(fexist(&fref)) %then
266 %let rc = %sysfunc(fdelete(&fref));
277 filename reroute temp;
283 %Let logpath = &sysprinttolog;
285 proc printto log=reroute;
288 filename mprint "&tempfile";
289 options mfile mprint;
290 %let initial_syscc = &syscc;
291 %include udl / source2;
295 %let syscc=&initial_syscc;
301 %if &logpath eq %then
308 proc printto log=&logpath;
315 %let syscc=&initial_syscc;
318 length udl_file $32767;
325 filename mprint clear;
331 in_table = udl_file2,
332 out_filter_variable_table = work.filter_udl,
340 data work.filter_variables;
342 work.filter_variable_nm
343 work.filter_variable_expression;
349 proc sort data=work.filter_variables
358 create table work._out_&_mg_sk as
359 select &_mg_sk as model_group_sk,
360 "&model_group_nm" as model_group length=32,
361 filter_variable as variable
362 from work.filter_variables
365 from dictionary.columns
366 where libname="%qupcase(%scan(&input_port,1,.))" and
367 memname="%qupcase(%scan(&input_port,2,.))");
370 proc append base = &output_table
371 data = work._out_&_mg_sk;
377 %if %qupcase(&_debug_.) eq NO %then
380 drop table work.udl_file2,
381 work.model_variable_metadata,
382 %do i = 1 %to &num_models;
383 work.model_&&model&i,
385 %do i = 1 %to %sysfunc(countw(&model_group_sk));
388 work.filter_variables,
390 work.filter_variable_nm,
391 work.filter_variable_expression;
399 %local vars_to_delete;
402 into : vars_to_delete
405 where scope eq 'GLOBAL' and
406 (upcase(name) like 'MG_JSON_%' or
407 upcase(name) like 'MDL_JSON_%');
410 %if vars_to_delete ne %then
412 %put NOTE: Deleting variable(s) &vars_to_delete.;
413 %symdel &vars_to_delete.;
416%mend irmst_get_required_mdl_vars;