如何对窗口中的某个字段进行排序以获得前 N 个值,并对 DolphinDB 中的相应字段进行聚合计算?
Posted
技术标签:
【中文标题】如何对窗口中的某个字段进行排序以获得前 N 个值,并对 DolphinDB 中的相应字段进行聚合计算?【英文标题】:How to sort a field in the window for the top N values and perform aggregate calculations for the corresponding field in DolphinDB? 【发布时间】:2022-01-09 17:10:39 【问题描述】:我的问题是关于在 DolphinDB 中计算报价数据。该表包含四列(股票代码、日期、收盘价和交易量),并按股票代码分组并按日期排序。我想做一个窗口计算,假设窗口大小为20。我的目的是对窗口中volume列中的数据进行排序,并取前5个volume记录来计算close对应值的平均值。在 DolphinDB 中计算它的最有效方法是什么?
【问题讨论】:
【参考方案1】:目前还没有针对这种情况的有效算法,但是您可以将函数moving与用户定义的函数一起使用以获得所需的结果。未来,DolphinDB会根据场景开发功能。
使用1.30.15及以上版本的单行代码进行计算:
//suppose t is a four-column table
t = table(take(`IBM, 100) as code, 2020.01.01 + 1..100 as date, rand(100,100) + 20 as volume, rand(10,100) + 100.0 as close)
函数moving
支持用户自定义anonymous aggregate function
select code, date, moving(defg(vol, close)return close[isort(vol, false).subarray(0:min(5,close.size()))].avg(), (volume, close), 20) from t context by code
【讨论】:
以上是关于如何对窗口中的某个字段进行排序以获得前 N 个值,并对 DolphinDB 中的相应字段进行聚合计算?的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB:如何对 MySQL 字段关键字等结果中的记录进行排序 [重复]