防止 SAS EG 输出数据步中的每个数据集

Prevent SAS EG from outputting every dataset in datastep

我是 SAS EG 的新手,我通常在实际需要该程序时使用 BASE SAS,但我的公司正大力转向 EG。我正在用一些代码帮助一些地区临时获取他们需要的数据(尽管代码不会改变)。

但是,在处理过程中,我们创建了许多临时文件,这些文件只是跨月迭代。 IE。如果用户想要 2002 - 2016 年的数据,我们必须提取所有这些库,然后将它们与我们的结果连接起来。这是由于高交易量,最终数据集仅限于少量观察。每当我 运行 这个程序时,SAS 都会输出在宏中创建的所有 183 个数据步,使其非常难看,有时出现的 "Output Data" 甚至不是最后一个数据步的输出,而是来自一个中间步骤,使得搜索 'final output dataset' 变得很烦人。

有没有办法限制写入 "Output Data" 的数据集,使其只显示最终数据集 - 这样我们的最终用户就不必担心被混淆了?

以上是一个示例 - 有大量我不想看到的输出数据集。我只想要决赛,它位于该列表中的(某处)...

版本为 SAS E.G. 7.1

EG 将始终自动显示程序结束后创建的每个数据集。如果您不希望它显示任何中间表,请在流程的最后一步删除它们。

在您的情况下,您的临时表似乎都共享名称 TRN。您可以这样清理它:

/* Start of process flow */

<program statements>;

/* End of process flow*/

proc datasets lib=work nolist nowarn nodetails;
    delete TRN:;
quit;

这样做要小心。确保所有临时表都遵循相同的前缀命名方案,否则您可能会不小心删除所需的表。

另一个解决方案是限制生成的数据集的数量,并有一个user-created link 到最终的数据集。有一个article about it here.

此处的替代解决方案是将输出数据集显式添加为过程流中的条目,并忽略输出 window 除非您需要从中间数据集中调查某些内容。

这样做的好处是,如果出现问题,您可以查看中间数据集,还可以让您不必查看所有数据集即可看到最终数据集。

您应该能够在轻松创建一次最终输出数据集后将其添加到流程中,然后在那之后一次它会在那里供您 select 查看。