【问题标题】:Prevent SAS EG from outputting every dataset in datastep防止 SAS EG 在 datastep 中输出每个数据集
【发布时间】:2017-01-30 18:07:44
【问题描述】:

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

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

有没有办法限制写入“输出数据”的数据集,以便它只显示最终数据集 - 这样我们的最终用户就不必担心会混淆?

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

版本是 SAS E.G. 7.1

【问题讨论】:

    标签: sas enterprise-guide


    【解决方案1】:

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

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

    /* Start of process flow */
    
    <program statements>;
    
    /* End of process flow*/
    
    proc datasets lib=work nolist nowarn nodetails;
        delete TRN:;
    quit;
    

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

    另一种解决方案是限制生成的数据集的数量,并让用户创建指向最终数据集的链接。有一个article about it here.

    【讨论】:

    • 哪里 ':' 是通配符?
    • 正确。 : 是 SAS 中的通配符快捷方式,表示“选择此前缀后的所有内容”。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2022-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多