最佳实践-为我的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。在

我有一个每天运行的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
。在上面的示例中,我的下一个
运行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;