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

时间:2018-05-17 11:39:35

标签: sas etl

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

我的生成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)。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

这样做:

 proc sql; select max(run_id)+1 into :id from have ; quit;