chore: demo data job
This commit is contained in:
2
sas/package-lock.json
generated
2
sas/package-lock.json
generated
@@ -243,6 +243,7 @@
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz",
|
||||
"integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.6",
|
||||
"form-data": "^4.0.4",
|
||||
@@ -1761,6 +1762,7 @@
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
|
||||
"integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
|
||||
"license": "BSD-3-Clause",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"psl": "^1.1.33",
|
||||
"punycode": "^2.1.1",
|
||||
|
||||
218
sas/sasjs/services/admin/demodata.sas
Normal file
218
sas/sasjs/services/admin/demodata.sas
Normal file
@@ -0,0 +1,218 @@
|
||||
/**
|
||||
@file
|
||||
@brief Creates demo tables and associated config
|
||||
@details Will self-destruct. Can be removed in prod installs.
|
||||
|
||||
<h4> SAS Macros </h4>
|
||||
@li mpeinit.sas
|
||||
@li mf_increment.sas
|
||||
@li mp_abort.sas
|
||||
@li mx_createwebservice.sas
|
||||
|
||||
@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.
|
||||
|
||||
**/
|
||||
|
||||
/* this library will need to be manually added to the autoexec or settings */
|
||||
%let demolib=PUBLIC;
|
||||
|
||||
|
||||
%mpeinit()
|
||||
|
||||
options dlcreatedir;
|
||||
libname &demolib "%sysfunc(pathname(&dc_libref))/public";
|
||||
|
||||
%mp_abort(iftrue= (&syscc ne 0)
|
||||
,mac=&_program
|
||||
,msg=%str(Problem during &demolib assignment (&syswarningtext &syserrortext))
|
||||
)
|
||||
|
||||
options replace;
|
||||
data &demolib..cars_ext(index=(carspk=(make model PRODUCTIONDATE) /unique));
|
||||
attrib
|
||||
MAKE length= $13
|
||||
MODEL length= $40
|
||||
TYPE length= $8
|
||||
ORIGIN length= $6
|
||||
COUNTRY length= $30
|
||||
POTENTIALBUY length= $6
|
||||
COMMENT length= $30
|
||||
NOTES length= $30
|
||||
CHECKBOXVAR length= $3
|
||||
PRODUCTIONDATE length= 8 format=DATE9.
|
||||
;
|
||||
set sashelp.cars;
|
||||
|
||||
if mod(ceil(ranuni(1)*100),3)=0 then comment=catx(' ',make,type);
|
||||
call missing(notes);
|
||||
/* random / reproducible date between 1960 and 2020 */
|
||||
PRODUCTIONDATE=ceil(ranuni(1)*365*60);
|
||||
if mod(ceil(ranuni(1)*1000),2)=0 then CHECKBOXVAR='YES';
|
||||
else CHECKBOXVAR='No';
|
||||
if mod(ceil(ranuni(1)*1000),3)=0 then POTENTIALBUY='Maybe';
|
||||
else if mod(ceil(ranuni(1)*1000),2)=0 then POTENTIALBUY='Yes';
|
||||
else POTENTIALBUY='No';
|
||||
make=cats(make);
|
||||
model=cats(model);
|
||||
|
||||
array cntrs (4) $ 60 _temporary_ ( "Germany" "France" "Poland" "Italy");
|
||||
if origin='USA' then country='USA';
|
||||
else if origin='Asia' then do;
|
||||
if mod(_n_,2)=0 then country='Japan';
|
||||
else country='Korea';
|
||||
end;
|
||||
else COUNTRY = cntrs[ ceil(dim(cntrs) * ranuni(1))];
|
||||
|
||||
*put (_all_)(=);
|
||||
run;
|
||||
|
||||
|
||||
data &demolib..COUNTRIES (index=(countriespk=(origin country) /unique));
|
||||
attrib
|
||||
ORIGIN length= $6
|
||||
COUNTRY length= $30
|
||||
;
|
||||
infile cards dsd;
|
||||
input
|
||||
ORIGIN :$char.
|
||||
COUNTRY :$char.
|
||||
;
|
||||
datalines4;
|
||||
Europe,Germany
|
||||
Europe,France
|
||||
Europe,Poland
|
||||
Europe,Italy
|
||||
USA,USA
|
||||
Asia,Japan
|
||||
Asia,Korea
|
||||
;;;;
|
||||
run;
|
||||
|
||||
%let demolib=%upcase(&demolib);
|
||||
proc sql;
|
||||
delete from &dc_libref..mpe_tables
|
||||
where libref="&demolib" and dsn in ('CARS_EXT','COUNTRIES');
|
||||
data append;
|
||||
if 0 then set &dc_libref..mpe_tables;
|
||||
TX_FROM=0;
|
||||
TX_TO='31DEC9999:23:59:59'dt;
|
||||
LIBREF="&demolib";
|
||||
LOADTYPE='UPDATE';
|
||||
NUM_OF_APPROVALS_REQUIRED=1;
|
||||
DSN='CARS_EXT'; BUSKEY='MAKE MODEL PRODUCTIONDATE'; output;
|
||||
DSN='COUNTRIES'; BUSKEY='ORIGIN COUNTRY'; output;
|
||||
run;
|
||||
proc append base=&dc_libref..MPE_TABLES data=&syslast;
|
||||
run;
|
||||
|
||||
/* hard coded values for CHECKBOXVAR */
|
||||
%let rk=1e6;
|
||||
proc sql noprint;
|
||||
delete from &dc_libref..mpe_selectbox
|
||||
where select_lib="&demolib"
|
||||
and select_ds in ('CARS_EXT');
|
||||
select max(selectbox_rk) into: rk
|
||||
from &dc_libref..mpe_selectbox;
|
||||
|
||||
insert into &dc_libref..mpe_selectbox set
|
||||
selectbox_rk=%mf_increment(rk)
|
||||
,ver_from_dttm=0
|
||||
,select_lib="&demolib"
|
||||
,select_ds="CARS_EXT"
|
||||
,base_column="CHECKBOXVAR"
|
||||
,selectbox_value='Yes'
|
||||
,selectbox_order=1
|
||||
,ver_to_dttm='31DEC5999:23:59:59'dt;
|
||||
insert into &dc_libref..mpe_selectbox set
|
||||
selectbox_rk=%mf_increment(rk)
|
||||
,ver_from_dttm=0
|
||||
,select_lib="&demolib"
|
||||
,select_ds="CARS_EXT"
|
||||
,base_column="CHECKBOXVAR"
|
||||
,selectbox_value='No'
|
||||
,selectbox_order=2
|
||||
,ver_to_dttm='31DEC5999:23:59:59'dt;
|
||||
|
||||
/* Table driven values */
|
||||
delete from &dc_libref..MPE_VALIDATIONS
|
||||
where base_lib="&demolib" and base_ds="CARS_EXT";
|
||||
|
||||
insert into &dc_libref..MPE_VALIDATIONS set
|
||||
tx_from=0
|
||||
,base_lib="&demolib"
|
||||
,base_ds="CARS_EXT"
|
||||
,base_col="MAKE"
|
||||
,rule_type='HARDSELECT'
|
||||
,rule_value="SASHELP.CARS.MAKE"
|
||||
,rule_active=1
|
||||
,tx_to='31DEC5999:23:59:59'dt;
|
||||
insert into &dc_libref..MPE_VALIDATIONS set
|
||||
tx_from=0
|
||||
,base_lib="&demolib"
|
||||
,base_ds="CARS_EXT"
|
||||
,base_col="MODEL"
|
||||
,rule_type='HARDSELECT'
|
||||
,rule_value="SASHELP.CARS.MODEL"
|
||||
,rule_active=1
|
||||
,tx_to='31DEC5999:23:59:59'dt;
|
||||
insert into &dc_libref..MPE_VALIDATIONS set
|
||||
tx_from=0
|
||||
,base_lib="&demolib"
|
||||
,base_ds="CARS_EXT"
|
||||
,base_col="TYPE"
|
||||
,rule_type='SOFTSELECT'
|
||||
,rule_value="SASHELP.CARS.TYPE"
|
||||
,rule_active=1
|
||||
,tx_to='31DEC5999:23:59:59'dt;
|
||||
%mp_abort(iftrue= (&syscc ne 0)
|
||||
,mac=&_program
|
||||
,msg=%str(syscc=syscc=&syscc during param configuration)
|
||||
)
|
||||
|
||||
/* programmatic values for COUNTRY (Dynamic Dropdown) */
|
||||
|
||||
filename vldtr temp;
|
||||
data _null_;
|
||||
file vldtr ;
|
||||
put 'proc sql;';
|
||||
put 'create table work.vals as';
|
||||
put ' select distinct ORIGIN as display_value,';
|
||||
put ' ORIGIN as raw_value';
|
||||
put " from &demolib..COUNTRIES";
|
||||
put ' order by 1;';
|
||||
put 'data work.DYNAMIC_VALUES; set work.vals;display_index=_n_;run;';
|
||||
put ' ';
|
||||
put 'proc sql;';
|
||||
put 'create table work.dev as ';
|
||||
put ' select a.display_index,b.country as display_value';
|
||||
put ' from work.DYNAMIC_VALUES as a';
|
||||
put " left join &demolib..countries as b";
|
||||
put " on a.raw_value=b.origin";
|
||||
put ' order by display_index;';
|
||||
put 'data work.DYNAMIC_EXTENDED_VALUES; set work.dev;by display_index;';
|
||||
put ' EXTRA_COL_NAME="COUNTRY";';
|
||||
put ' DISPLAY_TYPE="C";';
|
||||
put ' RAW_VALUE_CHAR=DISPLAY_VALUE;';
|
||||
put ' RAW_VALUE_NUM=.;';
|
||||
put ' if first.display_index then forced_value=1;';
|
||||
put 'run;';
|
||||
run;
|
||||
%mx_createwebservice(path=%mf_getapploc(&_program)/demo
|
||||
,name=origin,code=vldtr
|
||||
)
|
||||
proc sql;
|
||||
insert into &dc_libref..MPE_VALIDATIONS set
|
||||
tx_from=0
|
||||
,base_lib="&demolib"
|
||||
,base_ds="CARS_EXT"
|
||||
,base_col="ORIGIN"
|
||||
,rule_type='HARDSELECT_HOOK'
|
||||
,rule_value="%mf_getapploc(&_program)/demo/origin"
|
||||
,rule_active=1
|
||||
,tx_to='31DEC5999:23:59:59'dt;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user