0

私は SAS Data Integration Studio の経験が浅いユーザーです。

ジョブステータスに関する情報を電子メールで受け取りたいです。「ステータス処理」とアクション「メール送信」(ジョブ オプションから) を使用しても満足のいくものではありません。まず第一に - (おそらく?) このメールにログを添付できません。

SAS Enterprise Guide で、メール本文にログインの添付といくつかの有用な情報 (日時、エラーのリスト) を含む電子メールを送信するためのコードを開発およびテストしました。

%let mail = "test@test.com";
%let path_error = /home/ ... .log;

filename msg email
 to =           (&maile)
 subject =      "SAS Message Test"
 attach =       "&path_error.";

data _null_;
 dttm = put(datetime(),nldatm.);

 infile "&path_error.";
 input;

 file msg;
 if _n_ = 1 then do;
    put "Date time: " dttm;
    put;
    put "Full log in attach.";
    put "There are some ERRORs and WARNINGs:";
    put;
    end;
 if substr(_infile_,1,5) = "ERROR" then 
    put _infile_;
 if substr(_infile_,1,7) = "WARNING" then 
    put _infile_;
run;

このコードは問題なく動作します。エラーと警告のリストが記載された完全なメールが届きます。ログで私は見ることができます:

NOTE: 268 records were read from the infile "[...].log"

しかし、このコード (特に infile ステートメントによる読み取り) を DIS に実装するにはどうすればよいでしょうか?

ジョブ オプションを変更しました。

  1. プリコード - ログを外部ファイルに入れます。ログ名にはジョブ名と日時が含まれます:
%let path = /home/[...]/log_&etls_jobName._%sysfunc(datetime(), datetime.).log; 
proc printto log="&path.";
run;
  1. 郵便番号 - Enterprise Guide のコードを使用しました。
%let address = "test@test.com";
%let message = problems with &etls_jobName;

         filename sendMail email 
                to=         (&address) 
                subject=        "ETL Process problem: &etls_jobName." 
                attach=     "&path."; 

            options nosyntaxcheck;  

         data _null_; 
            dttm = put(datetime(),nldatm.);

                infile "&path.";
                input;

                file sendMail; 
                 if _n_ = 1 then do;
                    put "Date time: " dttm;
                    put;
                    put "Full log in attach.";
                    put "There are some ERRORs and WARNINGs:";
                    put;
                    end;
                 if substr(_infile_,1,5) = "ERROR" then 
                    put _infile_;
                 if substr(_infile_,1,7) = "WARNING" then 
                    put _infile_;
         run; 

実際には、ログインが添付された電子メールを受け取りますが、本文は空です。添付のログで私は見ることができます:

NOTE: 0 records were read from the infile 

いくつか質問があります:

  1. なぜ0レコード???
  2. 郵便番号からステートメントを削除input;してジョブを実行すると、本文に「日付時刻/完全なログが添付されています/いくつかのエラーと警告があります」という電子メールが届きます。inputコードで機能する場所で削除されるのはなぜですか?
  3. options nosyntaxcheck;コードがないとメールが送信されません。なんで?

答えてくれてありがとう。よろしく、ミハウ

4

1 に答える 1