1

Enterprise Guide 4.2 で、ファイルをプロセス フローから削除して再度開く以外に、ファイルのビューを更新する方法はありますか?

私の Google-fu は (どちらか一方の方法で) 答えを提供できず、SAS 管理者は方法を知らないと言いました (ただし、方法が見つかったら知らせます)。

決定的な「いいえ」(ドキュメントから)または「はい」と例を挙げていただければ幸いです。


SAS プログラムをコマンド ライン (EG の外部) から実行すると更新されるログ ファイルがあります。EG 内でコードを編集し、ログ ファイルを見て結果を確認したいと考えています。現在、更新されたログを表示するには、プロセス フローからログ ファイルを削除してから再度開く必要があります。

4

2 に答える 2

1

質問に対する最後のコメントから、(PuTTY セッションから) サーバー上で非対話型の SAS プログラムを実行していて、EG クライアントでログ ファイルを見ているように聞こえますが、それは正しいですか? その場合、ログ ファイルを監視するもっと簡単な方法があります。

PuTTY について言及する場合、サーバーは UNIX であると想定します。その場合は、オプションを指定してtailコマンドを使用してください。-fたとえば、SAS プログラムの名前が「myprog.sas」の場合、「myprog.log」という名前のログ ファイルが作成されるため、UNIX プロンプトで次のコマンドを試してください。

tail -f myprog.log

この-fオプションは、行がログに書き込まれるときにターミナル ウィンドウに出力を書き続けることを意味します。見るのに飽きたら (または、SAS の「ジョブの終了」メッセージが表示されたら)、文字「q」を入力して終了します。

EG は、SAS プログラムを実際に実行するために使用するアプリケーションを意図しています。UNIX プロンプトから何かを実行することは、設計の範囲外です (そして、これらの優れた EG 機能がすべて失われます)。また、メタデータ環境でセットアップされたサイト機能をすべて見逃してしまいます。

私が完全に基地から外れている場合は、質問を明確にしてください。

于 2013-02-28T01:18:02.803 に答える
0

計算ノードが Linux マシンでホストされている SAS プラットフォームで SAS EG または SAS Studio を使用する場合、私は常にコードを使用して、SAS によって作成された出力ファイルの内容を確認します。唯一の要件は、参照するファイルのフルパスを知っていることと、そこから読み取る権限を持っていることです。

簡単なアイデアは、ジェネリック DATA ステップを使用して次のことを行うことです。

  1. ファイルにアクセスする
  2. 行単位で読む
  3. 内容、位置、行番号などでデータをフィルタリングします。
  4. SASログにデータを出力して、そこで確認できるようにします

以下に簡単な例を示します。

  • まず、テスト用のファイルを作成します。あなたはすでにそれを持っています!あなたのものを使ってください。

    /* create a test file */
    data _null_;
      file '/folders/myshortcuts/test/file'; /* Note I'm using fullpath */
      put "The begining, :)";
      put "line 2 in my file is shy and likes to hide.";
      put "line 3, all good so far.";
      put "line 4 in my file is to remain private.";
      put "Finally the last line in my file!";
    run;
    
  • 次に、そのデータを読み取るコードは次のとおりです

    data _null_;
      /*--------
        references which input file will be read
        setting variable 'theEnd'=1 when 
        reaches end-of-file 
        Note I'm using fullpath
        --------*/
      infile '/folders/myshortcuts/test/file' end=theEnd;
    
      /*--------
         reads one line at a time from input file 
         storing it in variable _infile_
        --------*/
      input;
    
      /*--------
        contents of file will be writen in the log, to keep it readable,
        mark where the contents of the file will follow
        --------*/
      if _n_=1 then
        put "-----start file ----";
    
      /*--------
        filter out shy, private or unwanted data
        --------*/
      if _n_ ne 4;  /* continue only if row number is not 4 */
      if indexw(_infile_,"shy") le 0; /* continue only if data does not contains 'shy' */
    
      /*--------
        write the data you want, complete line read in this case
        --------*/
      put _N_= "->" _infile_;
    
      /*--------
        mark where the data in the file has ended
        --------*/
      if theEnd then put "-----end file ----";
    run;
    
  • SAS ログは次のようになります。

     NOTE: The infile '/folders/myshortcuts/test/file' is:
           Filename=/folders/myshortcuts/test/file,
           Owner Name=sasdemo,Group Name=sas,
           Access Permission=-rw-rw-r--,
           Last Modified=11Jan2017:22:42:56,
           File Size (bytes)=160
    
     -----start file ----
     _N_=1 ->The begining, :)
     _N_=3 ->line 3, all good so far.
     _N_=5 ->Finally the last line in my file!
     -----end file ----
    
     NOTE: 5 records were read from the infile '/folders/myshortcuts/test/file'.
           The minimum record length was 16.
           The maximum record length was 43.
     NOTE: DATA statement used (Total process time):
           real time           0.02 seconds
           cpu time            0.03 seconds
    
于 2017-01-12T07:09:51.273 に答える