2011-12-22 83 views
2

在我的日常工作中,我經常處理包含數百萬行數據集的數據集,有時數百萬,有時甚至超過10億。這些數據集通常需要進行排序。鍵幾乎總是大整數值(通常是9位數字)。有時數據集具有9位和3位的複合鍵。SAS中數據集的基數排序實現

我想知道是否可以在SAS中實現(LSD優先)基數排序宏,而不是使用PROC SORT來減少排序這些數據集的時間。我已經調整了適當的壓縮類型,只保留相關的字段(或使用tagsort),大小字段長度的適當,不要排序不必要的等等等等等等等等等等。

我正在使用的硬件有限制 - 讓我們假設我只有2G內存可用於SAS,因此解決方案無需將所有鍵值存儲在內存中的臨時數組中(至少不是一次全部)。

該解決方案將提供一個性能改進而不是proc排序?有沒有人已經實施過這樣的事情,或者有過使用它的經驗?我在浪費時間嗎?

回答

1

我發現執行(使用臨時數組)基數排序的一些例子在這裏:

http://listserv.uga.edu/cgi-bin/wa?A2=ind9901b&L=sas-l&P=11902

使用這個例子,它看起來好像在SAS新的螺紋排序一些非常寬鬆的假設(9版本+)將在時鐘時間內勝過單線程基數排序。在CPU時間,基數排序仍然表現更好,但這並不算太多。所以我會停止進一步追求這一點。

+0

您的鏈接對我無效。我認爲通過SAS/Connect實現自己的並行排序不是一個值得的選擇嗎? – user667489 2014-11-27 21:48:12

+0

我們沒有SAS/Connect許可,所以它不適合我。我也沒有使用連接,所以我不覺得有資格評論對不起。 – 2014-12-01 17:37:43

+0

如果你真的想看看這個,你可能會發現[這個鏈接](http://support.sas.com/rnd/scalability/tricks/connect.html)有趣。 – user667489 2014-12-01 19:29:29