最佳实践 - 为我的 SAS ETL 生成 RUN_ID

Best Practice - To generate a RUN_ID for my SAS ETL

我有一个每天 运行s 的 SAS ETL 过程,我使用控件 table 跟踪 运行。我一直在使用我为每个 运行 生成的序列号。但是有更好的或最佳实践吗?

我生成run_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 并将其用作下一个 run_id。在上面的示例中,我的下一个 run_id 将是 3 (2+1).

我建议使用日期时间戳作为 run_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;