【发布时间】:2013-09-05 20:56:44
【问题描述】:
首先我要说的是,我所在的团队对 SAS 来说都是新手。我们在 SAS 9.3 中使用 Enterprise Guide 5.1,并有一组垂直排列的日程表数据(每人每天一或两行)。我们有一些PROC SQL 语句、PROC TRANSPOSE 和其他几个步骤,它们主要使数据按周分组并水平显示。那组代码工作正常。流程第一次运行时,建立与数据库的连接需要一点额外的时间,但是一旦建立连接,剩下的过程只需要几秒钟(7个月的测试运行大约需要6秒钟)数据:58,000 行和 26 列的源数据到 6,000 行和 53 列的输出)。
我们的问题在于输出。最终用户在 Excel 中查找结果,因此我们使用 SAS Excel 插件并打开存储过程。为了得到输出,我们需要一个PROC PRINT,或者类似的东西。但是在上面的结果(6,000 行 x 53 列)上使用 PROC PRINT 只需要 36 秒即可生成。然后,在 EG 中渲染需要另外 10 秒左右,而在 Excel 中则需要更多时间。
代码很基础,只是:
PROC PRINT DATA=WORK.Report_1
NOOBS
LABEL;
RUN;
我们也尝试使用基本的PROC REPORT,但我们只获得了 3 秒:生成加上渲染时间仍然需要 33 秒。
PROC REPORT DATA=WORK.Report_1
RUN;
QUIT;
任何想法为什么需要这么长时间?还有其他更快的打印选项吗?
【问题讨论】:
-
PROC PRINT 需要多长时间才能打印到 HTML 文件(或仅打印到您选择的正常结果目的地),而不使用 Excel 插件?
-
这有点帮助,但还是 28 秒。
-
您的作品库在哪里?它是服务器本地的还是位于某处的文件共享上?
%put %sysfunc(pathname(work));将打印当前工作库的路径。当临时空间位于慢速文件系统上时,我只见过这样的问题。 -
@EvilBob22 - 这不是为了帮助,而是测试excel是否是问题所在。它不是 - 所以它可能与你的数据集有关(就像 DomPazz 所指向的那样)。
PROC PRINT本身不应该花费很长时间。 -
@Joe 很好,我不认为
PROC PRINT应该花那么长时间。
标签: sas