代码之家  ›  专栏  ›  技术社区  ›  ofzy

最佳实践-为我的SAS ETL生成RUN\u ID

  •  1
  • ofzy  · 技术社区  · 6 年前

    我有一个每天运行的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; 
    

    我得到最大值+1并将其用作下一个 run\u id .在上面的示例中,我的下一个 run\u id 将为3(2+1)。

    2 回复  |  直到 6 年前
        1
  •  2
  •   momo1644    6 年前

    我建议使用日期时间戳作为run\u 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
    
        2
  •  1
  •   Shenglin Chen    6 年前

    执行以下操作:

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