Loading...
Searching...
No Matches
makedata.sas
Go to the documentation of this file.
1/**
2 @file
3 @brief self destructing setup service
4 @details Will create the database and perform config activities
5
6 <h4> SAS Macros </h4>
7 @li mf_getapploc.sas
8 @li mf_mkdir.sas
9 @li mf_trimstr.sas
10 @li mp_abort.sas
11 @li mpe_getvars.sas
12 @li mpe_makedata.sas
13 @li mpe_makedatamodel.sas
14 @li mpe_makesampledata.sas
15 @li mv_deletejes.sas
16
17 @version 3.5
18 @author 4GL Apps Ltd
19 @copyright 4GL Apps Ltd. This code may only be used within Data Controller
20 and may not be re-distributed or re-sold without the express permission of
21 4GL Apps Ltd.
22
23**/
24
25
26%global dcpath ADMIN ;
27
28%webout(FETCH)
29
30/* enable vars to be passed as url params */
31%let exist=%sysfunc(exist(work.fromjs));
32%let inds=%sysfunc(ifc(&exist=1,fromjs,_null_));
33data _null_;
34 set &inds;
35 call symputx('dcpath',dcpath);
36 call symputx('ADMIN',ADMIN);
37run;
38
39
40options noquotelenmax;
41
42%let dclib=%upcase(VIYA%substr(%sysevalf(%sysfunc(datetime())/60),3,4));
43%let dclibname=Data Controller (&dclib);
44%let DC_LIBREF=&dclib;
45%let work=%sysfunc(pathname(work));
46
47
48%let dcpath=%mf_trimstr(&dcpath,/)/&dclib;
49%put &=sysuserid;
50%put &=dcpath;
51%put &=admin;
52
53%mf_mkdir(&dcpath)
54%mp_abort(iftrue= (&syscc ne 0)
55 ,mac=&_program
56 ,msg=%str(Unable to create &dcpath using &sysuserid)
57)
58%mf_mkdir(&dcpath/secret)
59%mf_mkdir(&dcpath/dc_staging)
60
61/* check we have physical permissions to the DCLIB folder */
62data _null_;
63 putlog "dcpath=&dcpath/permTest.txt";
64 putlog "sysuserid=&sysuserid";
65data _null_;
66 file "&dcpath/permTest.txt";
67run;
68%mp_abort(iftrue= (&syscc ne 0)
69 ,mac=&_program
70 ,msg=%str(User &sysuserid does not have WRITE permissions to: &dcpath )
71)
72filename delfile "&dcpath/permTest.txt";
73data _null_;
74 rc=fdelete('delfile');
75run;
76%mp_abort(iftrue= (&syscc ne 0)
77 ,mac=&_program..sas
78 ,msg=%str(User &sysuserid could create (but not delete) &dcpath/permTest.txt )
79)
80
81
82libname &dclib "&dcpath";
83%global admin;
84%let admin=%sysfunc(coalescec(&admin,All Users));
85%mpe_makedatamodel(lib=&dclib)
86%mpe_makedata(lib=&dclib,mpeadmins=&admin,path=%str(&dcpath))
87
88%mp_abort(iftrue=(&syscc ne 0)
89 ,mac=&sysmacroname
90 ,msg=%str(Err during &dclib build)
91)
92
93
94/* sample data library */
95%mf_mkdir(&dcpath/dc_demo)
96libname dcdemo "&dcpath/dc_demo";
97%mpe_makesampledata(outlib=DCDEMO)
98
99%mp_abort(iftrue=(&syscc ne 0)
100 ,mac=&sysmacroname
101 ,msg=%str(Err during demo data build)
102)
103
104
105/* the DC precode is stored in the root of the project */
106%let root=%mf_getapploc(&_program)/services;
107%put &=root;
108
109filename jobout filesrvc folderpath="&root";
110data _null_;
111 file jobout('settings.sas');
112 put '/* these values are ignored if DC_LIBREF was declared in autoexec */';
113 put ' ';
114 put '%global DC_LIBREF dc_admin_group dc_staging_area ;';
115 put '/* This library (libref) contains the control datasets for DC */';
116 put '/* If a different libref must be used, configure it below */';
117 put '%let DC_LIBREF=' "&dclib;";
118 put ' ';
119 put "libname &dclib '&dcpath' ;";
120 put ' ';
121 put '/* This group has unrestricted access to Data Controller */';
122 put '%let dc_admin_group=' "&admin;";
123 put ' ';
124 put '/* This physical location is used for staging data and audit history */';
125 put '%let dc_staging_area=' "&dcpath/dc_staging;";
126 put ' ';
127 put 'cas dcsession sessopts=(caslib=casuser);';
128 put 'caslib _all_ assign;';
129 put ' ';
130 if &syssite in (70221618,70253615) then do;
131 put "libname dcdemo '&dcpath/dc_demo';";
132 end;
133run;
134
135
136/* create demo data
137
138cas dcsession;
139caslib _all_ assign;
140caslib casmusic path='/opt/sas/viya/cascache/tracks' libref=casmusic GLOBAL;
141
142proc casutil;
143 LOAD DATA=dcdemo.cars
144 CASOUT="cars"
145 OUTCASLIB="casmusic" PROMOTE ;
146run;
147*/
148
149/*
150cas mysess;
151caslib _all_ assign;
152data casmusic.artists(promote=yes);
153 length name varchar(30);
154 do tracks=1 to 100;
155 name='Phil Collins'!!cats(tracks);
156 output;
157 end;
158run;
159*/
160/*
161%let url=http://millionsongdataset.com/sites/default/files/AdditionalFiles%trim(
162 )/unique_tracks.txt;
163filename test url "&url" lrecl=3000 ;
164
165proc sql;
166drop table casmusic.tunes;
167
168data tracks;
169 infile test dlmstr='<SEP>' dsd end=lastobs;
170 input track_id:$32. song_id:$32. artist_nm:$128. title:$256.;
171 output;
172 if lastobs then do;
173 track_id='dummyrecords';
174 title='none';
175 artist_nm='none';
176 do x=1 to 4000000;
177 drop x;
178 song_id=cats(x);
179 output;
180 end;
181 stop;
182 end;
183run;
184
185proc casutil;
186 LOAD DATA=tracks
187 CASOUT="tunes"
188 OUTCASLIB="casmusic" PROMOTE ;
189run;
190/*
191data append;
192 if 0 then set &dclib..MPE_TABLES;
193 libref="CASMUSIC";
194 dsn='TUNES';
195 num_of_approvals_required=1;
196 loadtype='UPDATE';
197 buskey='TRACK_ID SONG_ID';
198 tx_from=0;
199 tx_to='31DEC9999:23:59:59'dt;
200 output;
201 dsn='ARTISTS';
202 buskey='NAME';
203 output;
204run;
205proc append base=&dclib..MPE_tABLES data=append;
206run;
207*/
208%mp_abort(iftrue=(&syscc ne 0)
209 ,mac=&sysmacroname
210 ,msg=%str(Err during settings job creation)
211)
212
213
214%webout(OPEN)
215data result;
216 dclib="&dclib";
217 admingroup="&admin";
218 dcpath="&dcpath";
219run;
220%webout(OBJ,result)
221%webout(CLOSE)
222
223%mv_deletejes(path=&root/admin, name=makedata)