数据库是TSdb 引擎,按照日期range分区(一年一个分区),ashareeodprices表是按照股票代码和日期为sortColumns,
运行环境:dolphindb社区版,centos7,内存上限设置为8G
请教:计算日收益率下述2种方法,为什么效率差距这么大?有什么办法优化第二种方法?
方法1 总共2s不到:
trade = loadTable('dfs://stock_daily_TSDB','ashareeodprices')
oriData = select trade_dt, s_info_windcode, s_dq_close from trade
panelData = panel(row=oriData.trade_dt, col=oriData.s_info_windcode, metrics=oriData.s_dq_close, rowLabel=workdays, parallel=true)
returnsMatrix = panelData.ffill(10).percentChange()
方法2: 10s左右
trade = loadTable('dfs://stock_daily_TSDB','ashareeodprices')
ret = with t as (
select ratios(s_dq_close)-1 as ret,trade_dt,s_info_windcode from trade where trade_dt in workdays
context by s_info_windcode
) exec ret from t pivot by trade_dt,s_info_windcode map