8 createTimeSeriesEngine 结果输出错误

dolphindb server version : 2.00.10.1 2023.08.11

vscode: 2.0.1041


createTimeSeriesEngine 的例3中,可以返回一个向量到 DOUBLE[] 类型的列中;


核心需求:时序引擎调用的函数中,需要返回 [DOUBLE,DOUBLE[],DOUBLE] 的列数据;


出现问题:

如果 toVector 函数返回多个值,会有两种错误;

1. 修改代码如下时:

defg toVector(x){
    return x,1.1
)
output1 = table(10000:0, `time`sym`sumVolume`avg, [TIMESTAMP,STRING,DOUBLE[],DOUBLE]
engine1 = createTimeSeriesEngine(name="engine1", windowSize=60000, step=60000, metrics=<[toVector([first(volume),last(volume)])]>, dummyTable=trades, outputTable=output1, timeColumn=`time, keyColumn=`sym , useSystemTime=false, garbageSize=50, useWindowStartTime=false)

会报错:"Function toVector in time series engine doesn't support data type ANY"


2. 修改代码如下时:

defg toVector(x){
    return 1.1,x
)
output1 = table(10000:0, `time`sym`sumVolume`avg, [TIMESTAMP,STRING,DOUBLE,DOUBLE[]]
engine1 = createTimeSeriesEngine(name="engine1", windowSize=60000, step=60000, metrics=<[toVector([first(volume),last(volume)])]>, dummyTable=trades, outputTable=output1, timeColumn=`time, keyColumn=`sym , useSystemTime=false, garbageSize=50, useWindowStartTime=false)

能正常生成 engine,但是回放数据时,没有数据生成到 outputTable 中


在 toVector 函数中使用 

defg toVector(x){
    b = [1.0,2.0,3.0]
    b = arrayVector([size(b)],b)
    return b
}
defg toVector(x){
    b = array(DOUBLE[],0,1).append!([[1.0,2.0,3.0]]) 
    return b
}

都报错:"Function toVector in time series engine doesn't support data type DOUBLE[]"
是否能在 matrix 函数中使用 DOUBLE[] 无所谓,只是想试试是否能在 toVector 中把返回值固定为 array vector 看能否绕开错误使满足核心需求。结果报错。


请先 登录 后评论

1 个回答

Polly

您好,目前时序聚合引擎还不支持 array vector 类型的数据。

请先 登录 后评论
  • 1 关注
  • 0 收藏,601 浏览
  • Mkelar 提出于 2023-12-23 20:59