MPRINT(EM_DIAGRAM): data _null_; MPRINT(EM_DIAGRAM): call symput('NLDATE', strip(put(date(), NLDATE.))); MPRINT(EM_DIAGRAM): call symput('NLTIME', strip(put(datetime(), NLTIME.))); MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): data _null_; MPRINT(EM_DIAGRAM): nldate= sasmsg("sashelp.dmine", "log_date_note", 'N', "May 20, 2021" ); MPRINT(EM_DIAGRAM): nltime= sasmsg("sashelp.dmine", "log_time_note", 'N', "08:38:00" ); MPRINT(EM_DIAGRAM): put "*------------------------------------------------------------*"; MPRINT(EM_DIAGRAM): put "* Score Log"; MPRINT(EM_DIAGRAM): put nldate; MPRINT(EM_DIAGRAM): put nltime; MPRINT(EM_DIAGRAM): put "*------------------------------------------------------------*"; MPRINT(EM_DIAGRAM): run; *------------------------------------------------------------* * Score Log Date: May 20, 2021 Time: 08:38:00 *------------------------------------------------------------* MPRINT(EM_DIAGRAM): filename O2S_K8CD "C:\SAS Files\SAS Projects\Project PMDM_Group11\SmartHome\Workspaces\EMWS1\Report\EMSCORE.out" encoding="UTF-8" NOBOM; MPRINT(EM_DIAGRAM): proc printto print=O2S_K8CD new; MPRINT(EM_DIAGRAM): run; 332178 %let EMEXCEPTIONSTRING=; 332179 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332180 * SCORE: Report; MPRINT(EM_DIAGRAM): * SCORE: Report; 332181 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332182 %let EM_ACTION = SCORE; 332183 %let syscc = 0; 332184 %macro main; 332185 332186 filename temp catalog 'sashelp.emutil.reporter_macros.source'; 332187 %include temp; 332188 filename temp; 332189 332190 %setProperties; 332191 332192 %if %upcase(&EM_ACTION) = CREATE %then %do; 332193 filename temp catalog 'sashelp.emutil.reporter_create.source'; 332194 %include temp; 332195 filename temp; 332196 332197 %create; 332198 %end; 332199 332200 %else 332201 %if %upcase(&EM_ACTION) = TRAIN %then %do; 332202 332203 filename temp catalog 'sashelp.emutil.reporter_train.source'; 332204 %include temp; 332205 filename temp; 332206 %train; 332207 %end; 332208 332209 %doendm: 332210 %mend main; 332211 332212 %main; MPRINT(EM_DIAGRAM): MPRINT(MAIN): filename temp catalog 'sashelp.emutil.reporter_macros.source'; NOTE: %INCLUDE (level 1) file TEMP is file SASHELP.EMUTIL.REPORTER_MACROS.SOURCE. 332215 +%macro SetProperties; 332217 + /* reporting options */ 332218 + %em_checkmacro(name=EM_PROPERTY_FORMAT, value=PDF , global=Y); 332219 + %em_checkmacro(name=EM_PROPERTY_NODES , value=PATH, global=Y); 332220 + %em_checkmacro(name=EM_PROPERTY_STYLE , value=DEFAULT, global=Y); 332221 + %em_checkmacro(name=EM_PROPERTY_SHOWALL, value=N, global=Y); 332223 + %em_checkmacro(name=EM_PROPERTY_SUMMARIZATION, value=Y, global=Y); 332224 + %em_checkmacro(name=EM_PROPERTY_VARRANKING, value=Y, global=Y); 332225 + %em_checkmacro(name=EM_PROPERTY_CLASSIFICATION, value=Y, global=Y); 332226 + %em_checkmacro(name=EM_PROPERTY_CROSSTABS, value=Y, global=Y); 332227 + %em_checkmacro(name=EM_PROPERTY_LIFTCHART, value=Y, global=Y); 332228 + %em_checkmacro(name=EM_PROPERTY_FITSTAT, value=Y, global=Y); 332229 + %em_checkmacro(name=EM_PROPERTY_COMPAREMDL, value=Y, global=Y); 332231 + %em_checkmacro(name=EM_PROPERTY_BASICOUTPUT, value=N, global=Y); 332233 + %em_checkmacro(name=EM_PROPERTY_textfont, value=Arial, global=Y); 332234 + %em_checkmacro(name=EM_PROPERTY_headersize, value=8, global=Y); 332235 + %em_checkmacro(name=EM_PROPERTY_textsize, value=6, global=Y); 332236 + %em_checkmacro(name=EM_PROPERTY_titlesize, value=10, global=Y); 332238 +%mend SetProperties; NOTE: %INCLUDE (level 1) ending. MPRINT(MAIN): filename temp; NOTE: Fileref TEMP has been deassigned. MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(SETPROPERTIES): ; MPRINT(MAIN): ; MPRINT(EM_DIAGRAM): ; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): * End SCORE: Report; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332239 *------------------------------------------------------------*; 332240 * End SCORE: Report; 332241 *------------------------------------------------------------*; 332242 332243 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332244 * Report: Scoring DATA data; MPRINT(EM_DIAGRAM): * Report: Scoring DATA data; 332245 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332246 data EMWS1.Report_TRAIN 332247 / view=EMWS1.Report_TRAIN 332248 ; MPRINT(EM_DIAGRAM): data EMWS1.Report_TRAIN / view=EMWS1.Report_TRAIN ; 332249 set EMWS1.Score_TRAIN 332250 ; MPRINT(EM_DIAGRAM): set EMWS1.Score_TRAIN ; 332251 run; MPRINT(EM_DIAGRAM): run; NOTE: DATA STEP view saved on file EMWS1.REPORT_TRAIN. NOTE: A stored DATA STEP view cannot run under a different operating system. NOTE: View EMWS1.SCORE_TRAIN.VIEW used (Total process time): real time 0.07 seconds cpu time 0.07 seconds NOTE: DATA statement used (Total process time): real time 0.09 seconds cpu time 0.09 seconds MPRINT(EM_DIAGRAM): quit; 332252 quit; 332253 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332254 * Report: Scoring VALIDATE data; MPRINT(EM_DIAGRAM): * Report: Scoring VALIDATE data; 332255 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332256 data EMWS1.Report_VALIDATE 332257 / view=EMWS1.Report_VALIDATE 332258 ; MPRINT(EM_DIAGRAM): data EMWS1.Report_VALIDATE / view=EMWS1.Report_VALIDATE ; 332259 set EMWS1.Score_VALIDATE 332260 ; MPRINT(EM_DIAGRAM): set EMWS1.Score_VALIDATE ; 332261 run; MPRINT(EM_DIAGRAM): run; NOTE: DATA STEP view saved on file EMWS1.REPORT_VALIDATE. NOTE: A stored DATA STEP view cannot run under a different operating system. NOTE: View EMWS1.SCORE_VALIDATE.VIEW used (Total process time): real time 0.08 seconds cpu time 0.07 seconds NOTE: DATA statement used (Total process time): real time 0.08 seconds cpu time 0.07 seconds MPRINT(EM_DIAGRAM): quit; 332262 quit; 332263 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332264 * Report: Scoring SCORE data; MPRINT(EM_DIAGRAM): * Report: Scoring SCORE data; 332265 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332266 data EMWS1.Report_SCORE 332267 / view=EMWS1.Report_SCORE 332268 ; MPRINT(EM_DIAGRAM): data EMWS1.Report_SCORE / view=EMWS1.Report_SCORE ; 332269 set EMWS1.Score_SCORE 332270 ; MPRINT(EM_DIAGRAM): set EMWS1.Score_SCORE ; 332271 run; MPRINT(EM_DIAGRAM): run; NOTE: DATA STEP view saved on file EMWS1.REPORT_SCORE. NOTE: A stored DATA STEP view cannot run under a different operating system. NOTE: DATA statement used (Total process time): real time 0.00 seconds cpu time 0.00 seconds MPRINT(EM_DIAGRAM): quit; 332272 quit; 332274 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332275 * Report: Computing metadata for TRAIN data; MPRINT(EM_DIAGRAM): * Report: Computing metadata for TRAIN data; 332276 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; NOTE: View EMWS1.REPORT_TRAIN.VIEW used (Total process time): real time 0.10 seconds cpu time 0.11 seconds MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): * &nodeid: Computing Metadata for TRAIN data; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): filename _delta "C:\SAS Files\SAS Projects\Project PMDM_Group11\SmartHome\Workspaces\EMWS1\Report\CDELTA_TRAIN.sas"; MPRINT(EMADVISECOLUMNS): proc display c=sashelp.emmeta.advisecolumns.scl; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): options validvarname=any; MPRINT(EMADVISECOLUMNS): proc contents data=EMWS1.Report_TRAIN out=_tempAdvisor noprint; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): options validvarname=V7; MPRINT(EMADVISECOLUMNS): data _null_; MPRINT(EMADVISECOLUMNS): dsid = open('EMWS1.Report_TRAIN'); MPRINT(EMADVISECOLUMNS): call symput('_dsidTable', strip(put(dsid, best.))); MPRINT(EMADVISECOLUMNS): if dsid then do; MPRINT(EMADVISECOLUMNS): call symput('_engineTable', attrc(dsid, 'ENGINE')); MPRINT(EMADVISECOLUMNS): dsid = close(dsid); MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): proc contents data=EMWS1.Report_TRAIN out=WORK.M19U4PNH noprint; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M19U4PNH; MPRINT(EMADVISECOLUMNS): length NAME $ 64 TYPE $ 1 LABEL $ 200 FORMAT $ 36 INFORMAT $36 INDEX $ 1 INDEXTYPE $ 9; MPRINT(EMADVISECOLUMNS): label NAME =; MPRINT(EMADVISECOLUMNS): set WORK.M19U4PNH(keep=name type length label format formatl formatd informat informl informd idxusage rename=(type=itype)); MPRINT(EMADVISECOLUMNS): if itype = 1 then type = 'N'; MPRINT(EMADVISECOLUMNS): else type = 'C'; MPRINT(EMADVISECOLUMNS): if formatl > 0 then do; MPRINT(EMADVISECOLUMNS): if format ne '' then do; MPRINT(EMADVISECOLUMNS): if type='N' then format = strip(format)!!strip(put(formatl, best12.))!!'.'!!strip(put(formatd, best12.)); MPRINT(EMADVISECOLUMNS): else format = strip(format)!!strip(put(formatl, best12.))!!'.'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else format = strip(put(formatl, best12.))!!'.'!!strip(put(formatd, best12.)); MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if format ne '' then format = strip(format)!!'.'; MPRINT(EMADVISECOLUMNS): if informl > 0 then do; MPRINT(EMADVISECOLUMNS): if informat ne ' ' then do; MPRINT(EMADVISECOLUMNS): if type='N' then informat = strip(informat)!!strip(put(informl, best12.))!!'.'!!strip(put(informd, best12.)); MPRINT(EMADVISECOLUMNS): else informat = strip(informat)!!strip(put(informl, best12.))!!'.'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else informat = strip(put(informl, best12.))!!'.'!!strip(put(informd, best12.)); MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if informat ne '' then informat = strip(informat)!!'.'; MPRINT(EMADVISECOLUMNS): if idxusage = 'NONE' then index ="N"; MPRINT(EMADVISECOLUMNS): else index = "Y"; MPRINT(EMADVISECOLUMNS): indextype = idxusage; MPRINT(EMADVISECOLUMNS): drop idxusage itype formatl formatd informl informd; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M19U4PNH; MPRINT(EMADVISECOLUMNS): length UNAME $64; MPRINT(EMADVISECOLUMNS): set WORK.M19U4PNH; MPRINT(EMADVISECOLUMNS): UNAME = upcase(NAME); MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): proc sort data=WORK.M3NQKAWA NOTHREADS; MPRINT(EMADVISECOLUMNS): by UNAME; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M3NQKAWA; MPRINT(EMADVISECOLUMNS): drop UNAME; MPRINT(EMADVISECOLUMNS): set WORK.M3NQKAWA; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M2I64QN9(keep=NAME ATTR); MPRINT(EMADVISECOLUMNS): length ATTR $ 20; MPRINT(EMADVISECOLUMNS): set WORK.M3NQKAWA; MPRINT(EMADVISECOLUMNS): if level ne "INTERVAL" then do; MPRINT(EMADVISECOLUMNS): if order = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'ORDER'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if format ne ' ' and formattype = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'FORMATTYPE'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if role = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'ROLE'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if level = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'LEVEL'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if type = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'TYPE'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if index = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'INDEX'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if report = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'REPORT'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): proc sort NOTHREADS; MPRINT(EMADVISECOLUMNS): by attr; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M3NQKAWA; MPRINT(EMADVISECOLUMNS): length NAME $64 ROLE $ 32 LEVEL $ 10 ORDER $ 8 CREATOR $32 FORMATTYPE $ 10 FAMILY $ 10 LOWERLIMIT 8 UPPERLIMIT 8 REPORT $1 DISTRIBUTION $ 20 COMMENT $64; MPRINT(EMADVISECOLUMNS): length levelAssigned 8 roleAssigned 8 PRICE 8; MPRINT(EMADVISECOLUMNS): set WORK.M3NQKAWA; MPRINT(EMADVISECOLUMNS): if formattype = ' ' then do; MPRINT(EMADVISECOLUMNS): if format ne ' ' then do; MPRINT(EMADVISECOLUMNS): if type = 'N' then do; MPRINT(EMADVISECOLUMNS): pos = indexc(format,'.1234567890'); MPRINT(EMADVISECOLUMNS): if pos > 1 then tempfmt = substr(format,1, pos-1); MPRINT(EMADVISECOLUMNS): else tempfmt = ' '; MPRINT(EMADVISECOLUMNS): flen = length(tempfmt); MPRINT(EMADVISECOLUMNS): select; MPRINT(EMADVISECOLUMNS): when(tempfmt in ("DATE" "DAY" "DDMMYY" "DOWNAME" "JULDAY" "JULIAN" "MMDDYY" "MMDDYYD" "MMDDYYC" "MMDDYYN" "MMDDYYP" "MMDDYYS" "MONNAME" "MONTH" "MONYY" "NENGO" "QTR" "QTRR" "WEEKDATE" "WEEKDATX" "WEEKDAY" "WORDDATE" "WORDDATX" "YEAR" "YYMMDD" "YYMON" "YYMMDDC" "YYMMDDD" "YYMMDDN" "YYMMDDP" "YYMMDDS" "EURDFDE" "NJDATE" "NLDATE" "EURDFDD" "EURDFDWN" "EURDFMN" "EURDFMY" "EURDFWK" "EURDFWKX" "EURDFWDX" "EURDFDN" "EURDFDE" )) formattype = 'DATE'; MPRINT(EMADVISECOLUMNS): when(tempfmt in ("DATETIME" "EURDFDT" "TOD" )) formattype = "DATETIME"; MPRINT(EMADVISECOLUMNS): when(tempfmt in ("HHMM" "HOUR" "MMSS" "TIME" "TIMEAMPM" )) formattype = "TIME"; MPRINT(EMADVISECOLUMNS): when(tempfmt in ("COMMA" "COMMAX" "DOLLAR" "DOLLARX" "E" "FRACT" "NEGPAREN" "PERCENT")) formattype="QUANTITY"; MPRINT(EMADVISECOLUMNS): when(tempfmt in ("BINARY" "HEX" "IB" "OCTAL" "PD" "PIB" "PK" "RB" "SSN" "Z" "ZD")) formattype = "CODING"; MPRINT(EMADVISECOLUMNS): otherwise do; MPRINT(EMADVISECOLUMNS): formattype = "USER"; MPRINT(EMADVISECOLUMNS): if compress(tempfmt, '0123456789.', '') = '' then formattype='NUM'; MPRINT(EMADVISECOLUMNS): else if substr(tempfmt, 1, 6)='NLDATE' then formattype = "DATE"; MPRINT(EMADVISECOLUMNS): else if substr(tempfmt, 1, 6)='NLDATM' then formattype = "DATETIME"; MPRINT(EMADVISECOLUMNS): else if substr(tempfmt, 1, 4)='NLTIM' then formattype = "TIME"; MPRINT(EMADVISECOLUMNS): else if flen >= 4 then do; MPRINT(EMADVISECOLUMNS): str = substr(tempfmt,1,4); MPRINT(EMADVISECOLUMNS): if str in ("MMYY" "YYMM" "YYQR") then formattype ="DATE"; MPRINT(EMADVISECOLUMNS): else if str = "S370" then formattype = "CODING"; MPRINT(EMADVISECOLUMNS): else if str = "BEST" then formattype = "NUM"; MPRINT(EMADVISECOLUMNS): drop str; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if flen >=3 and substr(tempfmt,1,3) = "YYQ" then formatType = "DATE"; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): drop flen tempfmt pos; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else do; MPRINT(EMADVISECOLUMNS): formatType = "CATEGORY"; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if formatType = "NUM" then do; MPRINT(EMADVISECOLUMNS): if index = "Y" then formatType = "DISCRETE"; MPRINT(EMADVISECOLUMNS): else formatType = "QUANTITY"; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if level = ' ' then do; MPRINT(EMADVISECOLUMNS): if formatType in ("CATEGORY", "CODING", "ID") or type = "C" then level = "NOMINAL"; MPRINT(EMADVISECOLUMNS): else level = "INTERVAL"; MPRINT(EMADVISECOLUMNS): levelAssigned = 1; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else level = upcase(level); MPRINT(EMADVISECOLUMNS): if role = ' ' then do; MPRINT(EMADVISECOLUMNS): length name_prefix $8 _uname $64; MPRINT(EMADVISECOLUMNS): drop name_prefix _uname _freqflag; MPRINT(EMADVISECOLUMNS): retain _freqflag; MPRINT(EMADVISECOLUMNS): if LENGTH> 80 then ROLE = 'TEXT'; MPRINT(EMADVISECOLUMNS): _uname = upcase(NAME); MPRINT(EMADVISECOLUMNS): select(_uname); MPRINT(EMADVISECOLUMNS): when('_PARTIND_') do; MPRINT(EMADVISECOLUMNS): ROLE = 'ID'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): when('_WARN_') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('EM_SEGMENT') do; MPRINT(EMADVISECOLUMNS): ROLE = 'SEGMENT'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): when('_NODE_') do; MPRINT(EMADVISECOLUMNS): ROLE = 'SEGMENT'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): when('EM_CLASSTARGET') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('EM_VALUETARGET') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('EM_PREDICTION') ROLE = 'PREDICT'; MPRINT(EMADVISECOLUMNS): when('EM_PROBABILITY') ROLE = 'PREDICT'; MPRINT(EMADVISECOLUMNS): when('EM_EVENTPROBABILITY') ROLE = 'PREDICT'; MPRINT(EMADVISECOLUMNS): when('EM_CLASSIFICATION') ROLE = 'CLASSIFICATION'; MPRINT(EMADVISECOLUMNS): when('EM_DECISION') ROLE = 'DECISION'; MPRINT(EMADVISECOLUMNS): when('EM_PROFIT') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('EM_LOSS') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('EM_ROI') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('URI') ROLE = 'URL'; MPRINT(EMADVISECOLUMNS): when('FILTERED') ROLE = 'TEXTLOC'; MPRINT(EMADVISECOLUMNS): otherwise do; MPRINT(EMADVISECOLUMNS): if upcase(NAME) =: 'ZIP' then do; MPRINT(EMADVISECOLUMNS): ROLE = 'REJECTED'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): COMMENT = 'Rejected by: Exceed the maximum class level of %s'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if upcase(NAME) in('FREQ', 'FREQUENCY') then do; MPRINT(EMADVISECOLUMNS): ROLE = 'FREQ'; MPRINT(EMADVISECOLUMNS): if TYPE = 'C' then ROLE = 'INPUT'; MPRINT(EMADVISECOLUMNS): else if _freqflag =1 then ROLE='REJECTED'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else do; MPRINT(EMADVISECOLUMNS): name_prefix = scan(_uname, 1, '_'); MPRINT(EMADVISECOLUMNS): if scan(_uname, 2, '_') = '' then name_prefix=''; MPRINT(EMADVISECOLUMNS): if name_prefix in('F', 'I', 'U') then do; MPRINT(EMADVISECOLUMNS): ROLE = 'CLASSIFICATION'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if name_prefix in('Q') then ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): else if name_prefix in('P', 'V') then ROLE = 'PREDICT'; MPRINT(EMADVISECOLUMNS): else if name_prefix in('R', 'RS', 'RT', 'RD', 'RDS', 'RDT', 'RA', 'RAS', 'RAT') then ROLE = 'RESIDUAL'; MPRINT(EMADVISECOLUMNS): else if name_prefix ='D' then do; MPRINT(EMADVISECOLUMNS): ROLE = 'DECISION'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if name_prefix ='B' then do; MPRINT(EMADVISECOLUMNS): ROLE = 'SEGMENT'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if name_prefix in('EP', 'BP', 'CP', 'EL', 'CL', 'BL', 'ROI', 'IC') then ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): else do; MPRINT(EMADVISECOLUMNS): array _ROLE_ (19) $32 _TEMPORARY_ ('ASSESS','CLASSIFICATION','CENSOR', 'COST', 'CROSSID', 'DECISION', 'ID','INPUT', 'LABEL', 'MISSING','PREDICT','REFERRER','REJECTED', 'RESIDUAL','SEGMENT', 'SEQUENCE','TARGET', 'TEXT', 'TIMEID'); MPRINT(EMADVISECOLUMNS): drop _found_ i; MPRINT(EMADVISECOLUMNS): _found_=0; MPRINT(EMADVISECOLUMNS): do i=1 to 19 until(_found_=1); MPRINT(EMADVISECOLUMNS): if index(_uname, trim(_ROLE_{i}))=1 then do; MPRINT(EMADVISECOLUMNS): ROLE=_ROLE_{i}; MPRINT(EMADVISECOLUMNS): if ROLE = 'ID' then LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): else if ROLE = 'SEGMENT' then LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): else if ROLE = 'TIMEID' and TYPE='N' then LEVEL = 'INTERVAL'; MPRINT(EMADVISECOLUMNS): _found_=1; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if length(_uname)>2 then do; MPRINT(EMADVISECOLUMNS): if substr(reverse(trim(_uname)), 1, 3) = 'DI_' then do; MPRINT(EMADVISECOLUMNS): ROLE = 'ID'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if ROLE='FREQ' then _freqflag=1; MPRINT(EMADVISECOLUMNS): else if ROLE = 'CLASSIFICATION' then LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): if symexist('RATEMKG_ROLE') then do; MPRINT(EMADVISECOLUMNS): if upcase(symget('RATEMKG_ROLE')) in('Y', 'YES') then do; MPRINT(EMADVISECOLUMNS): if _uname =: 'POLICY' then ROLE = 'POLICYID'; MPRINT(EMADVISECOLUMNS): else if _uname in ('PARTITION', '_PARTIND_') then ROLE = 'PARTITION'; MPRINT(EMADVISECOLUMNS): else if type = 'N' then do; MPRINT(EMADVISECOLUMNS): if _uname = 'EXPOSURE' then ROLE = 'EXPOSURE'; MPRINT(EMADVISECOLUMNS): else if _uname = 'YEAR' then ROLE = 'YEAR'; MPRINT(EMADVISECOLUMNS): else if _uname = 'WEIGHT' then ROLE = 'WEIGHT'; MPRINT(EMADVISECOLUMNS): else if _uname = 'OFFSET' then ROLE = 'OFFSET'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if role = ' ' then do; MPRINT(EMADVISECOLUMNS): if formattype in('DATE', 'DATETIME', 'TIME') then role = 'TIMEID'; MPRINT(EMADVISECOLUMNS): else role = 'INPUT'; MPRINT(EMADVISECOLUMNS): roleAssigned = 1; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else role = upcase(role); MPRINT(EMADVISECOLUMNS): if REPORT = '' then REPORT = 'N'; MPRINT(EMADVISECOLUMNS): if symexist('dmwb_product') then do; MPRINT(EMADVISECOLUMNS): if upcase(symget('dmwb_product')) = 'FACTORYMINER_DATASOURCE' then do; MPRINT(EMADVISECOLUMNS): if ROLE ^in('INPUT', 'TARGET', 'REJECTED', 'SEGMENT', 'FREQ', 'ID', 'KEY') then ROLE='REJECTED'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M3NQKAWA; MPRINT(EMADVISECOLUMNS): set WORK.M3NQKAWA; MPRINT(EMADVISECOLUMNS): label NAME = "Variable Name" TYPE = "Type" ROLE = "Role" LEVEL= "Measurement Level" ORDER= "Order" CREATOR= "Creator" FORMATTYPE= "Format Type" FAMILY= "Family" DISTRIBUTION= "Distribution" PRICE= "Price" LOWERLIMIT= "Lower limit" UPPERLIMIT= "Upper Limit" REPORT= "Report" COMMENT= "Comment" INDEX= "Index" INDEXTYPE= "IndexType" LABEL= "Label" LENGTH= "Length"; MPRINT(EMADVISECOLUMNS): drop levelAssigned roleAssigned; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): MPRINT(EM_DIAGRAM): ; MPRINT(EM_DIAGRAM): proc sort data=WORK.COLUMNMETA; MPRINT(EM_DIAGRAM): by NAME; MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): * &nodeid: Merge incoming metadata; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): proc contents data=EMWS1.Score_TRAIN noprint out=_temp2(keep=NAME); MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): proc sort data=_temp2; MPRINT(EM_DIAGRAM): by NAME; MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): proc sort data=EMWS1.Score_CMeta_TRAIN out=_temp; MPRINT(EM_DIAGRAM): by NAME; MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): data EMWS1.Report_CMeta_TRAIN; MPRINT(EM_DIAGRAM): merge WORK.COLUMNMETA(in=_a) _temp2(in=_b) _temp(drop=FORMAT INFORMAT LENGTH INDEX INDEXTYPE in=_c) end=_eof_; MPRINT(EM_DIAGRAM): by NAME; MPRINT(EM_DIAGRAM): if (^_a and _b) or (^_c and _a and _b) then delete; MPRINT(EM_DIAGRAM): if ^_b then CREATOR = "Report"; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): * Report: Apply Delta Code; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): filename _delta; NOTE: View EMWS1.REPORT_TRAIN.VIEW used (Total process time): real time 0.08 seconds cpu time 0.09 seconds NOTE: View EMWS1.REPORT_VALIDATE.VIEW used (Total process time): real time 0.09 seconds cpu time 0.09 seconds 332614 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; 332615 * Report: Computing metadata for SCORE data; MPRINT(EM_DIAGRAM): * Report: Computing metadata for SCORE data; 332616 *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; NOTE: View EMWS1.REPORT_SCORE.VIEW used (Total process time): real time 0.01 seconds cpu time 0.01 seconds MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): * &nodeid: Computing Metadata for SCORE data; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): filename _delta "C:\SAS Files\SAS Projects\Project PMDM_Group11\SmartHome\Workspaces\EMWS1\Report\CDELTA_TRAIN.sas"; MPRINT(EMADVISECOLUMNS): proc display c=sashelp.emmeta.advisecolumns.scl; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): options validvarname=any; MPRINT(EMADVISECOLUMNS): proc contents data=EMWS1.Report_SCORE out=_tempAdvisor noprint; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): options validvarname=V7; MPRINT(EMADVISECOLUMNS): data _null_; MPRINT(EMADVISECOLUMNS): dsid = open('EMWS1.Report_SCORE'); MPRINT(EMADVISECOLUMNS): call symput('_dsidTable', strip(put(dsid, best.))); MPRINT(EMADVISECOLUMNS): if dsid then do; MPRINT(EMADVISECOLUMNS): call symput('_engineTable', attrc(dsid, 'ENGINE')); MPRINT(EMADVISECOLUMNS): dsid = close(dsid); MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): proc contents data=EMWS1.Report_SCORE out=WORK.M2EZ6_P5 noprint; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M2EZ6_P5; MPRINT(EMADVISECOLUMNS): length NAME $ 64 TYPE $ 1 LABEL $ 200 FORMAT $ 36 INFORMAT $36 INDEX $ 1 INDEXTYPE $ 9; MPRINT(EMADVISECOLUMNS): label NAME =; MPRINT(EMADVISECOLUMNS): set WORK.M2EZ6_P5(keep=name type length label format formatl formatd informat informl informd idxusage rename=(type=itype)); MPRINT(EMADVISECOLUMNS): if itype = 1 then type = 'N'; MPRINT(EMADVISECOLUMNS): else type = 'C'; MPRINT(EMADVISECOLUMNS): if formatl > 0 then do; MPRINT(EMADVISECOLUMNS): if format ne '' then do; MPRINT(EMADVISECOLUMNS): if type='N' then format = strip(format)!!strip(put(formatl, best12.))!!'.'!!strip(put(formatd, best12.)); MPRINT(EMADVISECOLUMNS): else format = strip(format)!!strip(put(formatl, best12.))!!'.'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else format = strip(put(formatl, best12.))!!'.'!!strip(put(formatd, best12.)); MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if format ne '' then format = strip(format)!!'.'; MPRINT(EMADVISECOLUMNS): if informl > 0 then do; MPRINT(EMADVISECOLUMNS): if informat ne ' ' then do; MPRINT(EMADVISECOLUMNS): if type='N' then informat = strip(informat)!!strip(put(informl, best12.))!!'.'!!strip(put(informd, best12.)); MPRINT(EMADVISECOLUMNS): else informat = strip(informat)!!strip(put(informl, best12.))!!'.'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else informat = strip(put(informl, best12.))!!'.'!!strip(put(informd, best12.)); MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if informat ne '' then informat = strip(informat)!!'.'; MPRINT(EMADVISECOLUMNS): if idxusage = 'NONE' then index ="N"; MPRINT(EMADVISECOLUMNS): else index = "Y"; MPRINT(EMADVISECOLUMNS): indextype = idxusage; MPRINT(EMADVISECOLUMNS): drop idxusage itype formatl formatd informl informd; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M2EZ6_P5; MPRINT(EMADVISECOLUMNS): length UNAME $64; MPRINT(EMADVISECOLUMNS): set WORK.M2EZ6_P5; MPRINT(EMADVISECOLUMNS): UNAME = upcase(NAME); MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): proc sort data=WORK.M0OG3CS7 NOTHREADS; MPRINT(EMADVISECOLUMNS): by UNAME; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M0OG3CS7; MPRINT(EMADVISECOLUMNS): drop UNAME; MPRINT(EMADVISECOLUMNS): set WORK.M0OG3CS7; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M26SVRGF(keep=NAME ATTR); MPRINT(EMADVISECOLUMNS): length ATTR $ 20; MPRINT(EMADVISECOLUMNS): set WORK.M0OG3CS7; MPRINT(EMADVISECOLUMNS): if level ne "INTERVAL" then do; MPRINT(EMADVISECOLUMNS): if order = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'ORDER'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if format ne ' ' and formattype = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'FORMATTYPE'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if role = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'ROLE'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if level = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'LEVEL'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if type = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'TYPE'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if index = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'INDEX'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if report = ' ' then do; MPRINT(EMADVISECOLUMNS): attr = 'REPORT'; MPRINT(EMADVISECOLUMNS): output; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): proc sort NOTHREADS; MPRINT(EMADVISECOLUMNS): by attr; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M0OG3CS7; MPRINT(EMADVISECOLUMNS): length NAME $64 ROLE $ 32 LEVEL $ 10 ORDER $ 8 CREATOR $32 FORMATTYPE $ 10 FAMILY $ 10 LOWERLIMIT 8 UPPERLIMIT 8 REPORT $1 DISTRIBUTION $ 20 COMMENT $64; MPRINT(EMADVISECOLUMNS): length levelAssigned 8 roleAssigned 8 PRICE 8; MPRINT(EMADVISECOLUMNS): set WORK.M0OG3CS7; MPRINT(EMADVISECOLUMNS): if formattype = ' ' then do; MPRINT(EMADVISECOLUMNS): if format ne ' ' then do; MPRINT(EMADVISECOLUMNS): if type = 'N' then do; MPRINT(EMADVISECOLUMNS): pos = indexc(format,'.1234567890'); MPRINT(EMADVISECOLUMNS): if pos > 1 then tempfmt = substr(format,1, pos-1); MPRINT(EMADVISECOLUMNS): else tempfmt = ' '; MPRINT(EMADVISECOLUMNS): flen = length(tempfmt); MPRINT(EMADVISECOLUMNS): select; MPRINT(EMADVISECOLUMNS): when(tempfmt in ("DATE" "DAY" "DDMMYY" "DOWNAME" "JULDAY" "JULIAN" "MMDDYY" "MMDDYYD" "MMDDYYC" "MMDDYYN" "MMDDYYP" "MMDDYYS" "MONNAME" "MONTH" "MONYY" "NENGO" "QTR" "QTRR" "WEEKDATE" "WEEKDATX" "WEEKDAY" "WORDDATE" "WORDDATX" "YEAR" "YYMMDD" "YYMON" "YYMMDDC" "YYMMDDD" "YYMMDDN" "YYMMDDP" "YYMMDDS" "EURDFDE" "NJDATE" "NLDATE" "EURDFDD" "EURDFDWN" "EURDFMN" "EURDFMY" "EURDFWK" "EURDFWKX" "EURDFWDX" "EURDFDN" "EURDFDE" )) formattype = 'DATE'; MPRINT(EMADVISECOLUMNS): when(tempfmt in ("DATETIME" "EURDFDT" "TOD" )) formattype = "DATETIME"; MPRINT(EMADVISECOLUMNS): when(tempfmt in ("HHMM" "HOUR" "MMSS" "TIME" "TIMEAMPM" )) formattype = "TIME"; MPRINT(EMADVISECOLUMNS): when(tempfmt in ("COMMA" "COMMAX" "DOLLAR" "DOLLARX" "E" "FRACT" "NEGPAREN" "PERCENT")) formattype="QUANTITY"; MPRINT(EMADVISECOLUMNS): when(tempfmt in ("BINARY" "HEX" "IB" "OCTAL" "PD" "PIB" "PK" "RB" "SSN" "Z" "ZD")) formattype = "CODING"; MPRINT(EMADVISECOLUMNS): otherwise do; MPRINT(EMADVISECOLUMNS): formattype = "USER"; MPRINT(EMADVISECOLUMNS): if compress(tempfmt, '0123456789.', '') = '' then formattype='NUM'; MPRINT(EMADVISECOLUMNS): else if substr(tempfmt, 1, 6)='NLDATE' then formattype = "DATE"; MPRINT(EMADVISECOLUMNS): else if substr(tempfmt, 1, 6)='NLDATM' then formattype = "DATETIME"; MPRINT(EMADVISECOLUMNS): else if substr(tempfmt, 1, 4)='NLTIM' then formattype = "TIME"; MPRINT(EMADVISECOLUMNS): else if flen >= 4 then do; MPRINT(EMADVISECOLUMNS): str = substr(tempfmt,1,4); MPRINT(EMADVISECOLUMNS): if str in ("MMYY" "YYMM" "YYQR") then formattype ="DATE"; MPRINT(EMADVISECOLUMNS): else if str = "S370" then formattype = "CODING"; MPRINT(EMADVISECOLUMNS): else if str = "BEST" then formattype = "NUM"; MPRINT(EMADVISECOLUMNS): drop str; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if flen >=3 and substr(tempfmt,1,3) = "YYQ" then formatType = "DATE"; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): drop flen tempfmt pos; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else do; MPRINT(EMADVISECOLUMNS): formatType = "CATEGORY"; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if formatType = "NUM" then do; MPRINT(EMADVISECOLUMNS): if index = "Y" then formatType = "DISCRETE"; MPRINT(EMADVISECOLUMNS): else formatType = "QUANTITY"; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if level = ' ' then do; MPRINT(EMADVISECOLUMNS): if formatType in ("CATEGORY", "CODING", "ID") or type = "C" then level = "NOMINAL"; MPRINT(EMADVISECOLUMNS): else level = "INTERVAL"; MPRINT(EMADVISECOLUMNS): levelAssigned = 1; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else level = upcase(level); MPRINT(EMADVISECOLUMNS): if role = ' ' then do; MPRINT(EMADVISECOLUMNS): length name_prefix $8 _uname $64; MPRINT(EMADVISECOLUMNS): drop name_prefix _uname _freqflag; MPRINT(EMADVISECOLUMNS): retain _freqflag; MPRINT(EMADVISECOLUMNS): if LENGTH> 80 then ROLE = 'TEXT'; MPRINT(EMADVISECOLUMNS): _uname = upcase(NAME); MPRINT(EMADVISECOLUMNS): select(_uname); MPRINT(EMADVISECOLUMNS): when('_PARTIND_') do; MPRINT(EMADVISECOLUMNS): ROLE = 'ID'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): when('_WARN_') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('EM_SEGMENT') do; MPRINT(EMADVISECOLUMNS): ROLE = 'SEGMENT'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): when('_NODE_') do; MPRINT(EMADVISECOLUMNS): ROLE = 'SEGMENT'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): when('EM_CLASSTARGET') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('EM_VALUETARGET') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('EM_PREDICTION') ROLE = 'PREDICT'; MPRINT(EMADVISECOLUMNS): when('EM_PROBABILITY') ROLE = 'PREDICT'; MPRINT(EMADVISECOLUMNS): when('EM_EVENTPROBABILITY') ROLE = 'PREDICT'; MPRINT(EMADVISECOLUMNS): when('EM_CLASSIFICATION') ROLE = 'CLASSIFICATION'; MPRINT(EMADVISECOLUMNS): when('EM_DECISION') ROLE = 'DECISION'; MPRINT(EMADVISECOLUMNS): when('EM_PROFIT') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('EM_LOSS') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('EM_ROI') ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): when('URI') ROLE = 'URL'; MPRINT(EMADVISECOLUMNS): when('FILTERED') ROLE = 'TEXTLOC'; MPRINT(EMADVISECOLUMNS): otherwise do; MPRINT(EMADVISECOLUMNS): if upcase(NAME) =: 'ZIP' then do; MPRINT(EMADVISECOLUMNS): ROLE = 'REJECTED'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): COMMENT = 'Rejected by: Exceed the maximum class level of %s'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if upcase(NAME) in('FREQ', 'FREQUENCY') then do; MPRINT(EMADVISECOLUMNS): ROLE = 'FREQ'; MPRINT(EMADVISECOLUMNS): if TYPE = 'C' then ROLE = 'INPUT'; MPRINT(EMADVISECOLUMNS): else if _freqflag =1 then ROLE='REJECTED'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else do; MPRINT(EMADVISECOLUMNS): name_prefix = scan(_uname, 1, '_'); MPRINT(EMADVISECOLUMNS): if scan(_uname, 2, '_') = '' then name_prefix=''; MPRINT(EMADVISECOLUMNS): if name_prefix in('F', 'I', 'U') then do; MPRINT(EMADVISECOLUMNS): ROLE = 'CLASSIFICATION'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if name_prefix in('Q') then ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): else if name_prefix in('P', 'V') then ROLE = 'PREDICT'; MPRINT(EMADVISECOLUMNS): else if name_prefix in('R', 'RS', 'RT', 'RD', 'RDS', 'RDT', 'RA', 'RAS', 'RAT') then ROLE = 'RESIDUAL'; MPRINT(EMADVISECOLUMNS): else if name_prefix ='D' then do; MPRINT(EMADVISECOLUMNS): ROLE = 'DECISION'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if name_prefix ='B' then do; MPRINT(EMADVISECOLUMNS): ROLE = 'SEGMENT'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else if name_prefix in('EP', 'BP', 'CP', 'EL', 'CL', 'BL', 'ROI', 'IC') then ROLE = 'ASSESS'; MPRINT(EMADVISECOLUMNS): else do; MPRINT(EMADVISECOLUMNS): array _ROLE_ (19) $32 _TEMPORARY_ ('ASSESS','CLASSIFICATION','CENSOR', 'COST', 'CROSSID', 'DECISION', 'ID','INPUT', 'LABEL', 'MISSING','PREDICT','REFERRER','REJECTED', 'RESIDUAL','SEGMENT', 'SEQUENCE','TARGET', 'TEXT', 'TIMEID'); MPRINT(EMADVISECOLUMNS): drop _found_ i; MPRINT(EMADVISECOLUMNS): _found_=0; MPRINT(EMADVISECOLUMNS): do i=1 to 19 until(_found_=1); MPRINT(EMADVISECOLUMNS): if index(_uname, trim(_ROLE_{i}))=1 then do; MPRINT(EMADVISECOLUMNS): ROLE=_ROLE_{i}; MPRINT(EMADVISECOLUMNS): if ROLE = 'ID' then LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): else if ROLE = 'SEGMENT' then LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): else if ROLE = 'TIMEID' and TYPE='N' then LEVEL = 'INTERVAL'; MPRINT(EMADVISECOLUMNS): _found_=1; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if length(_uname)>2 then do; MPRINT(EMADVISECOLUMNS): if substr(reverse(trim(_uname)), 1, 3) = 'DI_' then do; MPRINT(EMADVISECOLUMNS): ROLE = 'ID'; MPRINT(EMADVISECOLUMNS): LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if ROLE='FREQ' then _freqflag=1; MPRINT(EMADVISECOLUMNS): else if ROLE = 'CLASSIFICATION' then LEVEL = 'NOMINAL'; MPRINT(EMADVISECOLUMNS): if symexist('RATEMKG_ROLE') then do; MPRINT(EMADVISECOLUMNS): if upcase(symget('RATEMKG_ROLE')) in('Y', 'YES') then do; MPRINT(EMADVISECOLUMNS): if _uname =: 'POLICY' then ROLE = 'POLICYID'; MPRINT(EMADVISECOLUMNS): else if _uname in ('PARTITION', '_PARTIND_') then ROLE = 'PARTITION'; MPRINT(EMADVISECOLUMNS): else if type = 'N' then do; MPRINT(EMADVISECOLUMNS): if _uname = 'EXPOSURE' then ROLE = 'EXPOSURE'; MPRINT(EMADVISECOLUMNS): else if _uname = 'YEAR' then ROLE = 'YEAR'; MPRINT(EMADVISECOLUMNS): else if _uname = 'WEIGHT' then ROLE = 'WEIGHT'; MPRINT(EMADVISECOLUMNS): else if _uname = 'OFFSET' then ROLE = 'OFFSET'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): if role = ' ' then do; MPRINT(EMADVISECOLUMNS): if formattype in('DATE', 'DATETIME', 'TIME') then role = 'TIMEID'; MPRINT(EMADVISECOLUMNS): else role = 'INPUT'; MPRINT(EMADVISECOLUMNS): roleAssigned = 1; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): else role = upcase(role); MPRINT(EMADVISECOLUMNS): if REPORT = '' then REPORT = 'N'; MPRINT(EMADVISECOLUMNS): if symexist('dmwb_product') then do; MPRINT(EMADVISECOLUMNS): if upcase(symget('dmwb_product')) = 'FACTORYMINER_DATASOURCE' then do; MPRINT(EMADVISECOLUMNS): if ROLE ^in('INPUT', 'TARGET', 'REJECTED', 'SEGMENT', 'FREQ', 'ID', 'KEY') then ROLE='REJECTED'; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): end; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): data WORK.M0OG3CS7; MPRINT(EMADVISECOLUMNS): set WORK.M0OG3CS7; MPRINT(EMADVISECOLUMNS): label NAME = "Variable Name" TYPE = "Type" ROLE = "Role" LEVEL= "Measurement Level" ORDER= "Order" CREATOR= "Creator" FORMATTYPE= "Format Type" FAMILY= "Family" DISTRIBUTION= "Distribution" PRICE= "Price" LOWERLIMIT= "Lower limit" UPPERLIMIT= "Upper Limit" REPORT= "Report" COMMENT= "Comment" INDEX= "Index" INDEXTYPE= "IndexType" LABEL= "Label" LENGTH= "Length"; MPRINT(EMADVISECOLUMNS): drop levelAssigned roleAssigned; MPRINT(EMADVISECOLUMNS): run; MPRINT(EMADVISECOLUMNS): MPRINT(EM_DIAGRAM): ; MPRINT(EM_DIAGRAM): proc sort data=WORK.COLUMNMETA; MPRINT(EM_DIAGRAM): by NAME; MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): * &nodeid: Merge incoming metadata; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): proc contents data=EMWS1.Score_SCORE noprint out=_temp2(keep=NAME); MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): proc sort data=_temp2; MPRINT(EM_DIAGRAM): by NAME; MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): proc sort data=EMWS1.Score_CMeta_SCORE out=_temp; MPRINT(EM_DIAGRAM): by NAME; MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): data EMWS1.Report_CMeta_SCORE; MPRINT(EM_DIAGRAM): merge WORK.COLUMNMETA(in=_a) _temp2(in=_b) _temp(drop=FORMAT INFORMAT LENGTH INDEX INDEXTYPE in=_c) end=_eof_; MPRINT(EM_DIAGRAM): by NAME; MPRINT(EM_DIAGRAM): if (^_a and _b) or (^_c and _a and _b) then delete; MPRINT(EM_DIAGRAM): if ^_b then CREATOR = "Report"; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): * Report: Apply Delta Code; MPRINT(EM_DIAGRAM): *------------------------------------------------------------*; MPRINT(EM_DIAGRAM): run; MPRINT(EM_DIAGRAM): filename _delta; NOTE: View EMWS1.REPORT_SCORE.VIEW used (Total process time): real time 0.00 seconds cpu time 0.00 seconds MPRINT(EM_DIAGRAM): proc printto; MPRINT(EM_DIAGRAM): run;