Продолжительность прогона в 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;

Макет таблицы может быть настолько сложным, насколько вы хотите, и, пока вы можете получить к нему доступ, вы можете получить свою статистику.

Надеюсь, поможет

Другие вопросы по тегам