0

我有一个包含 1.2 千万行的大型数据集,使用通常的SAS proc sort进行排序大约需要 30 分钟。sas中是否有更快的算法/选项?库伯

4

2 回答 2

3

如果没有关于如何使用排序数据集以及组成数据集的字段和长度的更多详细信息,您可以尝试以下几件事:

  • 使用tagsortproc 排序中的选项。当数据集很宽时,这很有用。
  • 创建索引而不是排序。如果您只是要按组进行一些处理,那么这会更快并且效果也很好。
  • 如果您正在排序以进行合并,请考虑使用 SQL 连接(可能不需要对尽可能多的数据进行排序)或哈希表(可用于合并并且不需要排序的数据)。
  • 压缩输出数据集(如果您还没有)和/或输入数据集。这将减少IO。

但是要回答您的问题, sas then 中没有更快的排序过程proc sort。根据以下 PDF:SAS® 排序例程的顺序为 O(NlogN),与比较排序一样快。

如果您在获得同步排序许可的站点工作,那么这可以加快速度,但这通常默认启用。

http://www2.sas.com/proceedings/sugi26/p121-26.pdf

于 2012-09-04T06:57:12.770 回答
0

如果您需要对数据集进行排序的原因是将其与另一个数据集合并,您可能会考虑使用HASH对象进行合并/查找。那么您可能不需要对其进行排序。

于 2012-09-04T14:42:41.483 回答