如何在DolphinDB中通过元编程编写<rowAvg(bid1, bid2, bid3, bid4) as bidavg >语句?

问题描述 投票:0回答:1
period=1..4
sqlColAlias(makeCall(rowAvg, sqlCol(take(`bid, size(period)) + string(period))), `bidavg)

结果:

< rowAvg([< bid1 >,< bid2 >,< bid3 >,< bid4 >]) as bidavg > 

rowAvg
包含一些元代码向量而不是列字段,可以直接通过自定义编写如下:

< rowAvg(bid1, bid2, bid3, bid4) as bidavg >

但是我想动态输入bid1到4字段。应该怎么写呢?

metaprogramming dolphindb
1个回答
0
投票

如果是传统的基于函数的编程,可以写成:

t = table(1..3 as bid1, 2..4 as bid2, 3..5 as bid3, 4..6 as bid4)
colN = `bid +string(1..4)
sql(sqlColAlias(makeUnifiedCall(rowAvg, sqlCol(colN)), `bidavg), from= t).eval()

2.00.12/3.00.0版本中基于宏变量的编程可以写为:

<select rowAvg(_$$colN) as bidavg from t>.eval()
© www.soinside.com 2019 - 2024. All rights reserved.