49%irm_session_prepare();
51%macro split_rule_json_by_rule_id();
53 %sysevalf(%superq(analysis_data_key_list) ne,
boolean)
55 and %sysfunc(countw(&analysis_data_key_list., %str( ))) = %sysfunc(countw(&dq_rule_set_key_list., %str( )))
58 filename dqrsjson temp;
59 filename onersjsn temp;
65 JSON = symget(
'RULES_JSON');
69 libname jsonlibn JSON fileref=dqrsjson;
72 %
if(%rsk_dsexist(jsonlibn.ruleset_lookup)) %then %
do;
74 create table parsedJson as
75 select a.key, a.analysisData as primAnalysisData, b.ruleId, b.ruleRowKey, b.dataDef, b.analysisData
76 from jsonlibn.ruleset a left join jsonlibn.ruleset_lookup b
77 on a.ordinal_ruleSet = b.ordinal_ruleSet
83 set jsonlibn.ruleset(rename=(analysisData=primAnalysisData));
84 keep key primAnalysisData dataDef;
89 %local i next_dq_rule_set_key;
93 %
do %
while (%scan(&dq_rule_set_key_list, &i) ne );
94 %let next_dq_rule_set_key = %scan(&dq_rule_set_key_list, &i);
96 data parsedJsonOneRule;
98 where key eq &next_dq_rule_set_key.;
99 call symput(
"primAnalysisData", primAnalysisData);
104 select count(dataDef) into :numLookups
105 from parsedJsonOneRule;
108 proc json out=onersjsn nosastags;
110 write values
"ruleSet";
113 write values
"key" &next_dq_rule_set_key.;
114 write values
"analysisData" &primAnalysisData.;
115 %
if &numLookups. gt 0 %then %
do;
116 write values
"lookup";
118 export parsedJsonOneRule(drop=key primAnalysisData);
131 call symputx(compress(
'RULE_JSON_' || &i.), _infile_,
'G');
134 %let i = %eval(&i + 1);
140%macro create_rule_json_from_keys();
142 %sysevalf(%superq(analysis_data_key_list) ne,
boolean)
144 and %sysfunc(countw(&analysis_data_key_list., %str( ))) = %sysfunc(countw(&dq_rule_set_key_list., %str( )))
149 array analysis_data_list {%sysfunc(countw(&analysis_data_key_list., %str( )))} _temporary_ (&analysis_data_key_list.);
150 array dq_rule_set_list {%sysfunc(countw(&dq_rule_set_key_list., %str( )))} _temporary_ (&dq_rule_set_key_list.);
152 do i = 1 to dim(analysis_data_list);
153 analysis_data_key = analysis_data_list[i];
154 dq_rule_set_key = dq_rule_set_list[i];
155 json = compress(
'{"ruleSet":[{"key":' || dq_rule_set_key ||
',"analysisData":' || analysis_data_key ||
'}]}');
156 call symputx(compress(
'RULE_JSON_' || i), json,
'G');
162%
if %length(&RULES_JSON.) > 0 %then %
do;
163 %split_rule_json_by_rule_id();
166 %create_rule_json_from_keys();
169data &ds_out_dq_config.;
175 gl_reconciliation_flg $3.
176 general_ledger_key 8.
179 dq_details_flg =
"%upcase(&dq_details_flg.)";
182 gl_reconciliation_flg =
"%upcase(&gl_reconciliation_flg.)";
183 %
if(%sysevalf(%upcase(%superq(gl_reconciliation_flg)) eq Y,
boolean)) %then %
do;
184 general_ledger_key = &general_ledger_key.;
189 %sysevalf(%superq(analysis_data_key_list) ne,
boolean)
191 and %sysfunc(countw(&analysis_data_key_list., %str( ))) = %sysfunc(countw(&dq_rule_set_key_list., %str( )))
194 array analysis_data_list {%sysfunc(countw(&analysis_data_key_list., %str( )))} _temporary_ (&analysis_data_key_list.);
195 array dq_rule_set_list {%sysfunc(countw(&dq_rule_set_key_list., %str( )))} _temporary_ (&dq_rule_set_key_list.);
197 do i = 1 to dim(analysis_data_list);
198 analysis_data_key = analysis_data_list[i];
199 dq_rule_set_key = dq_rule_set_list[i];
201 rule_json = symget(compress(
'RULE_JSON_' || i));