【发布时间】:2014-09-24 20:28:58
【问题描述】:
我在 SAS 中运行 PROC SQL 函数时遇到错误消息。
下面是我的命令:
proc sql;
create table abc1
as select a.endfyr,a.begfyr,a.datadate, b.*
from data.table1 as a
right join
data.CRSP_19792013 as b
on a.lpermno=b.permno and a.begfyr<=b.date<=a.endfyr;
quit;
以下是日志文件的结果: 可访问的选项;
proc sql;
create table abc1
as select a.endfyr,a.begfyr,a.datadate, b.*
from data.table1 as a
right join
data.CRSP_19792013 as b
on a.lpermno=b.permno and a.begfyr<=b.date<=a.endfyr;
quit;
- 注意:使用了 SAS 线程排序。
- 错误:排序执行失败。
- 注意:PROC SQL 设置选项 NOEXEC 并将继续检查语句的语法。 退出;
- 注意:SAS 系统因错误而停止处理此步骤。
注意:使用的 PROCEDURE SQL(总处理时间):
实时 35.54 秒
- 用户cpu时间16.03秒
- 系统cpu时间15.08秒
- 内存 271858.12k
- 操作系统内存 277812.00k
- 时间戳 09/25/2014 04:02:32 AM
在网上搜索解决方法后,发现报错Sort execution failure可能是内存不足。我确实增加了 memsize 和 sortsize。但它们没有帮助。但是,上述内存和操作系统内存(日志文件结果)暗示了什么? data.CRSP_19792013 确实是一个大文件。
如果您需要更多信息来帮助我,请告诉我。
【问题讨论】:
-
您没有指定 SORTSIZE 和 MEMSIZE 的值,也没有指定表格的大小。要对表进行排序,您需要大约 3 倍的空间(在内存中或磁盘上);你有吗?另外,你的桌子上有索引吗?
-
您可以将大型数据集拆分为多个较小的数据集,对每个数据集进行排序,然后将它们交错在一起(
set与by语句)。 -
几周前,我们的一台 SAS BI 服务器出现了问题。对于任何具有 order by 子句的 SQL 步骤,无论大小如何,我都会遇到相同的错误。他们反弹了服务器并解决了问题。可能想检查您是否从小表中收到相同的错误消息。
-
作为第一次尝试:在加入之前对 lpermno 上的 table1 和 permno 上的 CRSP_19792013 进行排序。如果这没有帮助,请执行数据步骤。由于不等式,合并将不起作用,因此您需要设置和保留。注意,如果你有一个 n-m 匹配,虽然
标签: sql sorting error-handling sas