Продолжительность прогона в SAS Enterprise Miner
У меня следующая проблема. У нас есть несколько потоков в Enterprise Miner, и мы хотели бы узнать, сколько времени длился каждый запуск. Я попытался создать макрос, который бы сохранил время и дату начала и окончания, но проблема в том, что глобальные переменные, определенные в узле, больше не видны в последующем узле (поэтому глобальны только внутри узла, но не между узлами). Как люди обычно решают проблему? Любая идея или предложение?
Спасибо Умберто
1 ответ
Просто запишите временные метки для регистрации (EM должен создавать глобальный журнал так же, как это делают EG и DI)
Либо использовать:
data _null_;
datetime = datetime();
put datetime= datetime20.;
run;
или макроязык:
%put EM node started at at %sysfunc(time(),timeampm.) on %sysfunc(date(),worddate.).;
с сильно настроенным сообщением вы прочитали журнал SAS, ища эти строки с помощью регулярных выражений.
Решение 2:
Другой вариант - создать таблицу в библиотеке, которая видна, например, из EM и EG, и иметь вставки sql в начале / конце вашего процесса.
proc sql;
create table EM_logger
(jobcode char(100),
timestamp num informat=datetime20. format=datetime20.);
quit;
proc sql;
insert into EM_logger values('Begining Linear Reg',%sysfunc(datetime()));
quit;
data w;
do i=1 to 10000000;
output;
end;
run;
proc sql;
insert into EM_logger values('End Linear Reg',%sysfunc(datetime()));
quit;
Макет таблицы может быть настолько сложным, насколько вы хотите, и, пока вы можете получить к нему доступ, вы можете получить свою статистику.
Надеюсь, поможет