如何在流计算中实现pivot/unpivot的功能

需求是,将单只股票的时序因子展开到横截面上面做组合优化;需要按因子铺开,按个股铺开。

比如,输入:

timesymfactor1factor2factor3

10:15:00apple0.10.20.3

10:15:00google0.40.50.6

输出:

timefactor1-applefactor2-applefactor3-applefactor1-googlefactor2-googlefactor3-google

10:15:000.10.20.30.40.50.6

这个输入流表,是响应式状态引擎计算的结果表

请先 登录 后评论

1 个回答

Feng Gao

流数据里面可以通过自定义handler的方式,将输入流表的数据通过sql进行pivot或者unpivot置换,参考代码如下:

def myHand(t){
 t1 = select last(factor1), last(factor2), last(factor3) from t pivot by  time,code
 /*
  * do something
  */
}

subscribeTable(, tableName = "factor", actionName="act1", offset = -1, handler = myHand, msgAsTable =true)

响应式状态引擎计算的结果表作为输入流表本身没有什么问题,不过如果同一时间所有股票的因子,不能同时进来的话,只能对部分股票的进行pivot操作,代码本身不会有问题,可以根据需要确定是否需要这么做。

请先 登录 后评论
  • 1 关注
  • 0 收藏,973 浏览
  • dongmange 提出于 2021-10-14 16:51

相似问题