Лучшая практика - генерировать RUN_ID для моего SAS ETL - PullRequest
0 голосов
/ 17 мая 2018

У меня есть процесс 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_id.В приведенном выше примере мой следующий run_id будет 3 (2 + 1).

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Сделайте это:

 proc sql; select max(run_id)+1 into :id from have ; quit; 
0 голосов
/ 17 мая 2018

Я бы рекомендовал использовать метку даты и времени в качестве run_id вместо последовательности, чтобы само число было значимым;это может быть символ или цифра, но в этом формате YYYYMMDDHHMMSS, поэтому вам будет проще отсортировать по.

Этот код сгенерирует для вас идентификатор:

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
...