最佳实践-为我的SAS ETL生成运行ID
我有一个每天运行的SAS ETL流程,并使用控制表跟踪运行情况。我一直在使用我为每次跑步生成的序列号。但有更好的或最佳的做法吗 我生成运行id的过程是:最佳实践-为我的SAS ETL生成运行ID,sas,etl,Sas,Etl,我有一个每天运行的SAS ETL流程,并使用控制表跟踪运行情况。我一直在使用我为每次跑步生成的序列号。但有更好的或最佳的做法吗 我生成运行id的过程是: data have; input run_id date $; datalines; 0 12dec2017 1 21jan2018 2 1feb2018 ; run; proc sql; select max(run_id) into :id from have ; quit; 我得到max+1并将其用作下一个运行id。在
data have;
input run_id date $;
datalines;
0 12dec2017
1 21jan2018
2 1feb2018
;
run;
proc sql; select max(run_id) into :id from have ; quit;
我得到max+1并将其用作下一个
运行id
。在上面的示例中,我的下一个运行id
将是3(2+1)。我建议使用日期时间戳作为运行id,而不是序列,这样数字本身就有意义了;它可以是字符或数字,但采用这种格式YYYYMMDDHHMMSS
,因此更易于排序
此代码将为您生成id:
data new;
run_id=&id+1;
id_char="%sysfunc(today(),yymmddn8.)_%sysfunc(compress(%sysfunc(time(),time6.) ,:))";
id_num=%sysfunc(today(),yymmddn8.)%sysfunc(compress(%sysfunc(time(),time6.) ,:));
run;
输出:
run_id=3 id_char=20180517_1234 id_num=201805171234
这样做:
proc sql; select max(run_id)+1 into :id from have ; quit;