【发布时间】:2015-06-28 21:30:06
【问题描述】:
我有高频财务数据(毫秒),很多列,137 个 mio 观察/行,总大小 32Gb。我想使用 PROC TIMESERIES 将观察结果聚合到 30 秒的容器中。我的初始命令涉及很多变量/任务。
proc timeseries data=DATA out= DATA_SEC30;
id DATETIME interval=sec30 setmissing=missing align=beg start = '01jan1999.00:05'dt end = '01dec2014.00:00'dt;
var TRADE BID ASK MID / accumulate=last;
var TIME / accumulate=last;
var OF VOL / accumulate=total;
var DATE / accumulate=N;
run;
如果我运行此代码,我会收到以下错误消息:
错误:无法分配足够的内存。至少请求了 312070K 字节。您必须要么增加可用内存量,要么以不同的方式解决问题。
我的问题是解决问题的最佳方法是什么?
A) 将文件拆分为更小的(非重叠)文件,例如。日期,然后在每个子文件上运行上面的代码,最后把它们放在一起? 或
B) 将上述代码按步骤拆分,例如每个 VAR 语句一个,但在完整文件上运行?
答案可能是特定于程序的,也可能是特定于计算机的(但我希望得到一个“一般”的答案)。我使用 PROC TIMESERIES,计算机是一个服务器,SAS 分配了大约 256Gb 内存。
【问题讨论】:
标签: sas