SAS ODS Query/Statement 打印及其输出

SAS ODS Query/Statement print along with it's output

SAS EG

有什么方法可以使用 SAS ODS 打印用于获取输出的 query/statement 以及输出吗?

假设,

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 打印查询以及输出吗?

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

不过,有几种方法可以获得您想要的东西。

首先,如果你可以使用 Jupytr,SAS 有插件可以让它与 SAS 一起工作,然后你可以简单地在笔记本中写下 运行 代码,结果显示为你的代码就像你想要的那样。有关详细信息,请参阅 Chris Hemedinger's blog post on the subject

其次,SAS Studio 可能会在明年晚些时候发布的下一个主要修订版(我相信是 5.0 版)中支持笔记本式界面。所以类似地,你会把你的代码和输出放在同一个 windows.

最后,第三个选项是按照 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;