【问题标题】:Sort execution failure in SASSAS中的排序执行失败
【发布时间】: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 倍的空间(在内存中或磁盘上);你有吗?另外,你的桌子上有索引吗?
  • 您可以将大型数据集拆分为多个较小的数据集,对每个数据集进行排序,然后将它们交错在一起(setby 语句)。
  • 几周前,我们的一台 SAS BI 服务器出现了问题。对于任何具有 order by 子句的 SQL 步骤,无论大小如何,我都会遇到相同的错误。他们反弹了服务器并解决了问题。可能想检查您是否从小表中收到相同的错误消息。
  • 作为第一次尝试:在加入之前对 lpermno 上的 table1 和 permno 上的 CRSP_19792013 进行排序。如果这没有帮助,请执行数据步骤。由于不等式,合并将不起作用,因此您需要设置和保留。注意,如果你有一个 n-m 匹配,虽然

标签: sql sorting error-handling sas


【解决方案1】:

如果您正在使用 z/OS,请使用 "prco sql nothreads;"

如果使用 SAS 线程排序,则不使用主机排序。但是主机排序要好得多。

【讨论】:

    猜你喜欢
    • 2016-03-24
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多