Re: [問題] SAS跑大量資料所需的時間
※ 引述《fairwind (應天風)》之銘言:
: 我今天有請人測了一下
: data5G
: 筆數80萬筆
:
: sas code 大概長這樣吧
: ----------
: proc sort data=abc
: by var_a
: run;
:
: 1.在C:下
: real time:5:30
: cpu time:0:30
:
: 2.裝在ramdisk下 (ramdisk有9G)
: 不管怎麼試都會出現 out of resource?
: 然後只能中止程式
: 想請問這裡是什麼問題?
: 謝謝
試著監控你放work這個lib的實體目錄 看看檔案的增長狀況
之前的經驗是程式寫錯 造成資料無限制膨脹然後爆掉
或是 work的lib設到C碟去了 C碟哪夠這樣操
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.112.86.144
: → kingbee:我猜因該是SAS在讀取時快取檔案非常大 ramdisk的限制 03/17 16:10
: → kingbee:在控制台那邊監控看看 不知道是不是 我有接觸過健保資料 03/17 16:11
: → kingbee:上百萬筆連讀進去都等快20分鐘了 早期更不用說 03/17 16:11
IO本來就很慢的
我做個兩百M的extraction都夠我抽根菸了
: → kingbee:你的語法那邊 by 後面是不是沒加分號; 03/17 16:13
: 推 pohsin:還有一個方法可以參考,盡量不要排序,排序很花時間,盡量 03/17 19:52
: → pohsin:用proc sql的方式來處理資料,可以不用排序,速度上快很多 03/17 19:53
在幾萬筆的小資料量下
沒有經過sort的SQL指令的確會比較快
但是資料量一大 真的建議要先sort過
不然SAS不會那麼沒事找事做
一大堆需要先sort的指令怎不先幫你sort過才執行
扣除IO的因素
很多資料處理很慢往往是因為資料結構沒做好
資料結構往往是非IT人員最容易亂搞的地方
反正資料結構弄好跑1分鐘也是跑
跑1小時也是跑 反正硬體這麼便宜 就給它掛上去
我不知道原po的資料長怎樣 也不太清楚你所謂的"很基本的程式"
扣除硬體因素
建議的方式有
1.加index
這技巧比較難一點 你可以試著去找網路上的說明
2.以數字處理
例如在合併的時候 欄位值是"1" 和欄位值是1
處理速度就有差
當上百萬筆在處裡的時候 差的可能是一包菸時間了
同樣的 原po的程式中
: proc sort data=abc
: by var_a
: run;
var_a如果剛好是 數字型的文字
你自己可以試試看時間差多少
3.多下點條件值 或是先刪除你之後根本不會用到的資料
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.189.144
※ 編輯: liton 來自: 118.167.189.144 (03/17 23:01)
→
03/18 09:49, , 1F
03/18 09:49, 1F
→
03/18 22:17, , 2F
03/18 22:17, 2F
→
03/18 22:18, , 3F
03/18 22:18, 3F
→
03/18 22:18, , 4F
03/18 22:18, 4F
討論串 (同標題文章)