panel 和 sql 语句的效率区别 求优化

数据库是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




请先 登录 后评论

1 个回答

Polly

pivot by 支持分布式计算,试试看 select last(ratios(s_dq_close)-1as ret from  loadTable('dfs://stock_daily_TSDB','ashareeodprices') pivot by trade_dt,s_info_windcode

请先 登录 后评论
  • 1 关注
  • 0 收藏,261 浏览
  • cxh 提出于 2023-12-26 11:27

相似问题