1

在 Enterprise Guide 4.2 中,有没有办法刷新您的文件视图,而不是从流程流中删除它然后重新打开它?

我的 Google-fu 未能提供答案(一种或另一种),我的 SAS 管理员说他不知道有什么方法(但如果我找到了就让他知道)。

一个明确的“否”(来自文档)或带有示例的“是”将不胜感激。


当我从命令行(EG 之外)运行我的 SAS 程序时,我有一个更新的日志文件。我在 EG 中编辑我的代码,我想查看日志文件以查看结果。目前我必须从我的流程中删除日志文件,然后重新打开它以查看更新的日志。

4

2 回答 2

1

从您对问题的最后评论来看,听起来您正在服务器上运行非交互式 SAS 程序(来自 PuTTY 会话)并使用 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

在 SAS 平台中使用 SAS EG 或 SAS Studio 时,如果计算节点托管在 Linux 机器中,我总是使用代码查看 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 回答