【问题标题】:SAS ODS Query/Statement print along with it's outputSAS ODS 查询/语句打印及其输出
【发布时间】:2017-11-30 06:46:48
【问题描述】:

SAS EG

有什么方法可以使用 SAS ODS 打印用于获取输出的查询/语句以及输出?

假设,

ods pdf file=pdfile;
proc sql;
select a.*
from tab1 a inner join tab2 b
on a.something=b.something
where <>
having <>;
quit;
ods _all_ close;

这将打印从上述查询生成的OUTPUT。但是我也可以通过 ods pdf 打印查询以及输出吗?

【问题讨论】:

  • 尝试使用 PROC PRINTO LOG = 'path' 打印整个日志,从那里您可以使用查询
  • 有没有办法打印到ods输出文件?我知道proc printto,但想在 ods 输出中的表格之前或之后获取它。
  • 真正丑陋的方法是使用PROC PRINTTO,读回文件,然后将其打印到ODS。不幸的是,我不知道有任何其他方法可以做到这一点。您可以将其添加到 SAS 选票,以便它在请求项目列表中。
  • 这是一个非常优雅的解决方案!

标签: sas sas-ods


【解决方案1】:

据我所知,没有自动重定向日志的方法。

不过,有几种方法可以得到你想要的。

首先,如果您能够使用 Jupytr,SAS 有插件可以使其与 SAS 一起使用,然后您只需在笔记本中编写并运行代码,结果就会随您的代码一起显示.详情请见Chris Hemedinger's blog post on the subject。

其次,SAS Studio 可能会在明年年底发布的下一个主要版本(我相信是 5.0 版)中支持笔记本式界面。同样,您可以将代码放在同一个窗口中并获得输出。

最后,第三个选项是按照 Reeza 的建议进行 - 写入日志文件,然后将其打印到输出。这很混乱,但有可能。

这是后者的一个例子。我没有做任何清理工作,请注意,您可能希望删除与 PROC PRINTTO 和其他注释相关的日志记录(或打开 NONOTE)。

ods pdf file="c:\temp\test.pdf";
filename logfile temp;
proc printto log=logfile;
run;
proc sql;
select * from sashelp.class;
quit;
proc printto;
run;
data _null_;
  infile logfile;
  input @1 @;
  call execute(cats('ods text="',trim(_infile_),'";'));
run;

ods _all_ close;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多