Re: [問題] SAS跑大量資料所需的時間

看板Statistics作者 (歐吉桑留學生)時間15年前 (2009/03/17 22:49), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串5/9 (看更多)
※ 引述《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
請問 所謂的index?
03/18 09:49, 1F

03/18 22:17, , 2F
www2.sas.com/proceedings/sugi29/123-29.pdf
03/18 22:17, 2F

03/18 22:18, , 3F
SAS的index文章很少 SQL就很多了
03/18 22:18, 3F

03/18 22:18, , 4F
index涉及資料結構的規劃 已經不單單是程式的問題了
03/18 22:18, 4F
文章代碼(AID): #19lxXv2I (Statistics)
討論串 (同標題文章)
文章代碼(AID): #19lxXv2I (Statistics)