【问题标题】:Realtime printing to SAS log during data step execution在数据步骤执行期间实时打印到 SAS 日志
【发布时间】:2017-01-20 23:44:08
【问题描述】:

有没有办法让putputlog 语句实时更新日志窗口(即在数据步执行时)?

我有一个特别长的数据步正在执行,我希望能够随时监控进度。在下面的示例中,当 datastep 完成执行时,我将 put 语句写入日志。

示例代码:

data x;
  do i = 1 to 1000000 * 100;
    output;
    if mod(i,1000000 * 10) eq 0 then do;
      put i;
    end;
  end;
run;

编辑:我在 Windows 10 上运行 SAS 9.4 TS1M4。只是常规编辑器,而不是 EG。

【问题讨论】:

  • 使用什么SAS客户端?在老式交互式 PC SAS 中,它应该可以按照您的意愿工作。在企业指南中,在整个提交完成之前,您不会取回日志。
  • 我同意@Quentin - 我们需要了解您的平台/客户。我昨天只是在 Windows PC SAS 平台上观看PUTLOG 语句的一些实时 SAS 日志输出。
  • 已更新系统信息。
  • 嗯。在 win 7 上可以像在 9.3 上一样工作。但是刚刚尝试了 9.4M0 并且在该步骤完成之前不会更新日志。这对我来说是一个惊喜。不确定是否有可能有帮助的选项。
  • @Quentin 感谢您澄清这一点。我的印象是它也按照您描述的方式工作,当我遇到这个问题时感到很惊讶。我查看了与日志相关的所有系统选项,但没有看到任何内容。这可能是 SAS 支持的问题。

标签: sas


【解决方案1】:

在 Enterprise Guide 中:SAS 应该在每个 datastep / procedure 执行后将消息、注释、警告和错误输出到日志中。

在 Interactive Base SAS (9.4M5) 中:您可以使用putlog 语句,您可以将消息和变量值输出到日志,请参阅下面的示例代码:

data _NULL_;
%let ds=%sysfunc(datetime(),datetime23.);
putlog "Note: Start time is &ds.";
sleep_time=sleep(10,1);
putlog "Note: Another messge here " sleep_time=;
run;

实时输出:

Note: Start time is 08MAY2018:13:58:26
Note: Another messge here sleep_time=10

【讨论】:

  • 我要的是执行过程中的反馈,而不是执行完成后的反馈。
  • 您可以尝试 putlog 语句,但正如 Quentin 在 EG 中上面评论的那样,您将获得日志发布执行。 support.sas.com/documentation/cdl/en/lestmtsref/63323/HTML/…
  • 我为实时执行日志添加了代码。这在 EG 中不起作用
  • 刚试过这个,它没有给我实时输出。交互式基础 SAS。 9.4 TS1M5。 Windows 10。
  • 那么你必须在这个品脱打开一张支持 sas 的票。您可以给他们我的代码作为示例来复制问题;它在我的 9.4M5 上运行良好。
猜你喜欢
  • 2016-06-07
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多