SAS Enterprise Guide 8.3:当进程中断时发送自动邮件
我想让我的SAS Enterprise Guide过程在流程的任意地方出问题时发送邮件。目前这个流程共有12个独立步骤,当拉取较大的数据集时,有时会出现超时问题。
我试着用类似下面的方式来查找错误,但不确定是否真的能让它起作用:
%MACRO error_email;
%if &syscc > 0 %then %do;
FILENAME OUTBOX EMAIL;
DATA _NULL_;
...
基本上,我希望像下面这样的代码只在某一步发生错误时执行(下面的代码是在所有步骤都正确完成后才会执行的):
FILENAME OUTBOX EMAIL;
DATA _NULL_;
FILE OUTBOX
TO = ("[email protected]")
FROM = ("[email protected]")
CC = ("[email protected]")
SUBJECT = "Process Name Process Completion"
ATTACH = ("&logs_out.Counts_And_Stats.html"
"&logs_out.Project_Name_Project_Log.txt"
"&logs_out.Project_Name_Tables_Produced.txt");
FILE OUTBOX;
PUT "The super-awesome-fancy-pants process has completed.";
PUT "Please find high-level statistics and the system log attached in this email.";
PUT "For questions regarding this report, please reach out to your local human.";
PUT " ";
PUT "Thank you";
RUN;
有没有人有这方面的经验?
解决方案
我刚刚找到一个对我有用的答案。它使用一个宏,在我需要它在每段代码执行完后触发的时候调用。
%global runerror;
%macro runerror;
%if &syserr. > 4 %then %do;
/* ANYTHING GREATER THAN 4 IS INDICATIVE OF AN ERROR */
/* REFERENCE: https://support.sas.com/kb/45/143.html */
FILENAME OUTBOX EMAIL;
DATA _NULL_;
FILE OUTBOX
TO = ("[email protected]")
FROM = ("[email protected]")
CC = ("[email protected]")
SUBJECT = "Fancy Process Failure"
ATTACH = ("&logs_out.Project_Log.txt");
FILE OUTBOX;
PUT "The super-duper-awesome process has encountered an issue.";
PUT "Please use the attached log to determine the cause of the issue.";
PUT "For questions regarding this report, please reach out to your local code-monger.";
PUT " ";
PUT "Thank you";
RUN;
FILENAME OUTBOX CLEAR;
%end;
%mend runerror;
然后,在我需要的每段代码之后,我放上 %runerror;,效果很好。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。