Files
dc/sas/sasjs/targets/viya/services_viya/admin/makedata.sas
allan 4b558948d9
All checks were successful
Build / Build-and-ng-test (pull_request) Successful in 4m4s
Build / Build-and-test-development (pull_request) Successful in 8m33s
fix: updating pipeline to default to streaming on viya
Also added error captures on makedata
2025-06-04 13:27:28 +01:00

221 lines
4.8 KiB
SAS

/**
@file
@brief self destructing setup service
@details Will create the database and perform config activities
<h4> SAS Macros </h4>
@li mf_getapploc.sas
@li mf_mkdir.sas
@li mf_trimstr.sas
@li mp_abort.sas
@li mpe_getvars.sas
@li mpe_makedata.sas
@li mpe_makedatamodel.sas
@li mpe_makesampledata.sas
@li mv_deletejes.sas
@version 3.5
@author 4GL Apps Ltd
@copyright 4GL Apps Ltd. This code may only be used within Data Controller
and may not be re-distributed or re-sold without the express permission of
4GL Apps Ltd.
**/
%global dcpath ADMIN ;
%webout(FETCH)
/* enable vars to be passed as url params */
%let exist=%sysfunc(exist(work.fromjs));
%let inds=%sysfunc(ifc(&exist=1,fromjs,_null_));
data _null_;
set &inds;
call symputx('dcpath',dcpath);
call symputx('ADMIN',ADMIN);
run;
options noquotelenmax;
%let dclib=%upcase(VIYA%substr(%sysevalf(%sysfunc(datetime())/60),3,4));
%let dclibname=Data Controller (&dclib);
%let DC_LIBREF=&dclib;
%let work=%sysfunc(pathname(work));
%let dcpath=%mf_trimstr(&dcpath,/)/&dclib;
%put &=sysuserid;
%put &=dcpath;
%put &=admin;
%mf_mkdir(&dcpath)
%mp_abort(iftrue= (&syscc ne 0)
,mac=&_program
,msg=%str(Unable to create &dcpath using &sysuserid)
)
%mf_mkdir(&dcpath/secret)
%mf_mkdir(&dcpath/dc_staging)
/* check we have physical permissions to the DCLIB folder */
data _null_;
putlog "dcpath=&dcpath/permTest.txt";
putlog "sysuserid=&sysuserid";
data _null_;
file "&dcpath/permTest.txt";
run;
%mp_abort(iftrue= (&syscc ne 0)
,mac=&_program
,msg=%str(User &sysuserid does not have WRITE permissions to: &dcpath )
)
filename delfile "&dcpath/permTest.txt";
data _null_;
rc=fdelete('delfile');
run;
%mp_abort(iftrue= (&syscc ne 0)
,mac=&_program..sas
,msg=%str(User &sysuserid could create (but not delete) &dcpath/permTest.txt )
)
libname &dclib "&dcpath";
%global admin;
%let admin=%sysfunc(coalescec(&admin,All Users));
%mpe_makedatamodel(lib=&dclib)
%mpe_makedata(lib=&dclib,mpeadmins=&admin,path=%str(&dcpath))
%mp_abort(iftrue=(&syscc ne 0)
,mac=&sysmacroname
,msg=%str(Err during &dclib build)
)
/* sample data library */
%mf_mkdir(&dcpath/dc_demo)
libname dcdemo "&dcpath/dc_demo";
%mpe_makesampledata(outlib=DCDEMO)
%mp_abort(iftrue=(&syscc ne 0)
,mac=&sysmacroname
,msg=%str(Err during demo data build)
)
/* the DC precode is stored in the root of the project */
%let root=%mf_getapploc(&_program)/services;
%put &=root;
filename jobout filesrvc folderpath="&root";
data _null_;
file jobout('settings.sas');
put '/* these values are ignored if DC_LIBREF was declared in autoexec */';
put ' ';
put '%global DC_LIBREF dc_admin_group dc_staging_area ;';
put '/* This library (libref) contains the control datasets for DC */';
put '/* If a different libref must be used, configure it below */';
put '%let DC_LIBREF=' "&dclib;";
put ' ';
put "libname &dclib '&dcpath' ;";
put ' ';
put '/* This group has unrestricted access to Data Controller */';
put '%let dc_admin_group=' "&admin;";
put ' ';
put '/* This physical location is used for staging data and audit history */';
put '%let dc_staging_area=' "&dcpath/dc_staging;";
put ' ';
if &syssite in (70221618,70253615) then do;
put "libname dcdemo '&dcpath/dc_demo';";
end;
run;
/* create demo data
cas dcsession;
caslib _all_ assign;
caslib casmusic path='/opt/sas/viya/cascache/tracks' libref=casmusic GLOBAL;
proc casutil;
LOAD DATA=dcdemo.cars
CASOUT="cars"
OUTCASLIB="casmusic" PROMOTE ;
run;
*/
/*
cas mysess;
caslib _all_ assign;
data casmusic.artists(promote=yes);
length name varchar(30);
do tracks=1 to 100;
name='Phil Collins'!!cats(tracks);
output;
end;
run;
*/
/*
%let url=http://millionsongdataset.com/sites/default/files/AdditionalFiles%trim(
)/unique_tracks.txt;
filename test url "&url" lrecl=3000 ;
proc sql;
drop table casmusic.tunes;
data tracks;
infile test dlmstr='<SEP>' dsd end=lastobs;
input track_id:$32. song_id:$32. artist_nm:$128. title:$256.;
output;
if lastobs then do;
track_id='dummyrecords';
title='none';
artist_nm='none';
do x=1 to 4000000;
drop x;
song_id=cats(x);
output;
end;
stop;
end;
run;
proc casutil;
LOAD DATA=tracks
CASOUT="tunes"
OUTCASLIB="casmusic" PROMOTE ;
run;
/*
data append;
if 0 then set &dclib..MPE_TABLES;
libref="CASMUSIC";
dsn='TUNES';
num_of_approvals_required=1;
loadtype='UPDATE';
buskey='TRACK_ID SONG_ID';
tx_from=0;
tx_to='31DEC9999:23:59:59'dt;
output;
dsn='ARTISTS';
buskey='NAME';
output;
run;
proc append base=&dclib..MPE_tABLES data=append;
run;
*/
%mp_abort(iftrue=(&syscc ne 0)
,mac=&sysmacroname
,msg=%str(Err during settings job creation)
)
%webout(OPEN)
data result;
dclib="&dclib";
admingroup="&admin";
dcpath="&dcpath";
run;
%webout(OBJ,result)
%webout(CLOSE)
%mv_deletejes(path=&root/admin, name=makedata)