可以先将其转成 matrix 然后调用 avg 计算会对矩阵的每列进行,然后按股票代码分组聚合搭配 toArray 即可 select toArray(avg(matrix(BidPrice))) from re where date(DateTime) = 2021.01.04 group by SecurityID
回答于 2023-11-02 17:11
可以用 loop 函数实现,参考脚本如下t = table(`a`b as sym, array(INT[]).append!([1 2 1, 2 3 2]) as val)select sym, loop(distinct,val) as`val from t // 不保证顺序select sym, loop(x -> x[ifirstHit{==,x,}:E(distinct x).sort()], val) as `val from t // 保证顺序
回答于 2023-11-02 16:30
对于元组可以用 each 系列的函数遍历其中的 list,然后使用 drop 函数删除最后一个元素。此处使用 eachLeft(:L) 函数遍历 A : A = (til 10, til 20)(def(x,y): x.drop(y)):L(A, -1)
回答于 2023-11-02 15:36
可以用元编程实现,其中 conds 是多个条件组成的列表: unifiedCall(coalesce, loop(iif, conds, choices, NULL)).nullFill!(default)
回答于 2023-10-26 15:40
可以这样写:其中 colNames 是列名向量,`newCol 是计算结果列的别名 sql(sqlColAlias(makeUnifiedCall(rowSum, sqlCol(colNames)), `newCol), t).eval()
回答于 2023-10-26 14:08
DolphinDB 的 REF 是通过 move 函数实现的,入参 N 是一个标量,返回值是一个移动后的序列,此处涨停距是一个字段,即是向量。可以用 select *, open[til(count open)-涨停距] as open2 from T 替代 REF 实现您想要的结果。
回答于 2023-10-26 12:04
re = select * from pnodeRun(getTSDBMetaData) where chunkPath like "%/iotTest%" and table like "pt_all%" context by chunkId order by files file = re.files.split(",").flatten().dropna() 可以参考上述脚本获取
回答于 2023-10-25 17:48
空字符可以用 dropna 过滤或者 v[isValid(v)],如果需要其他过滤条件可以修改索引为一个条件表达式。
回答于 2023-10-20 10:26
我测试了一下是因为您的 array vector 有空元素,而 interval 指定了 fill 方法,调用的是内置的 ffill 函数,目前 fill 空值的函数不支持 array vector 数据形式,所以会报错。 目前解决方案是把空值手动填个 0 或者什么标志元素进去,然后调用 interval,之后再过滤。需要注意 array vector 字段的更新必须是整列,更新...
回答于 2023-10-13 10:30