SAS ODS查询/语句打印及其输出

SAS ODS查询/语句打印及其输出,sas,sas-ods,Sas,Sas Ods,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; 这将打印从上述查询生成的输出。但是我也可以通过ods pdf打印查询以及输出吗?我知道没有自动重

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;

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

我知道没有自动重定向日志的方法

然而,有几种方法可以得到你想要的

首先,如果您能够使用Jupytr,SAS有插件使其能够与SAS一起工作,然后您可以简单地在笔记本中写入并运行代码,结果将随您的代码一起显示。有关更多详细信息,请参阅

其次,SAS Studio将支持笔记本风格的界面,我相信下一个主要版本5.0将于明年晚些时候发布。同样地,您可以将代码和输出放在相同的窗口中

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

下面是后者的一个例子。我没有做任何努力来清理它,注意,您可能想要删除与PROC PRINTTO和otehr注释相关的日志记录,或者打开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;

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