您这种需求,需要整列替换。 a = 1 2 3 4b = array(INT[]).append!([7 8 9, 10 11 12, 13 14 15, 16 17 18])t = table(a, b)v = fixedLengthArrayVector(each(def(mutable x, y){x[0]=y;return x},b, a).transpose())update t set b=v
回答于 2023-12-08 11:20
如果去重策略不为 LAST,目前 TSDB 更新会将涉及多个分区的所有数据一次性并发加载到内存,造成 OOM。你可以 update 的时候加上过滤条件,按单个分区进行更新
回答于 2023-12-01 18:00
默认情况下,Web数据接口单表一次返回1024条记录。通过length参数可设置返回更多(上限为10万)条记录。详情参考一下webAPI教程第3节 https://gitee.com/dolphindb/api-json/blob/master/README_CN.md#3-json%E5%8C%85%E6%A0%BC%E5%BC%8F%E8%AF%A6%E8%A7%A3
回答于 2023-12-01 17:54
这个报错是因为不能创建 VOID 类型的向量,DDB的向量都是强类型的,所以你需要根据 sym 的类型进行转换,如过是 STRING 就写 [""], 如果是 int 就写 [int(NULL)] 或者 [00i]
回答于 2023-12-01 17:44
需要先将数据分组,然后在组内计算,然后使用 HINT_KEEPORDER 保序返回结果。可以参考下述脚本: t = table(1..10 as id, 1..10 as v) select [HINT_KEEPORDER] id, moving(sum, v, 3) from t context by rowNo(v) % 2
回答于 2023-12-01 14:02
3.0 版本 server 开发了这个限制,但 2.0 版本不支持这种调用,可以用 call 实现: def demo(t, dynamicFunc) { return select *, call(dynamicFunc, qty) from t11 context by sym}
回答于 2023-12-01 11:52
看日志信息应该在队列中等待工作线程,先确认一下系统的 workerNum 的配置值,后台有没有大任务一直在跑。可以尝试改大 workNum 然后再重启 server。
回答于 2023-12-01 11:37
interval 部分可以利用 makeUnifiedCall 或者 makeCall 调用函数生成对应元代码。参考脚本: makeUnifiedCall(funcByName(`interval), [sqlCol(`date), parseExpr(`1d), 0])
回答于 2023-11-28 10:05
在元编程中,你可能需要把多列组合成一个 matrix, 参考: x = `x+string(1..3)residual = makeCall(member, makeCall(ols, sqlCol(`factor0), makeUnifiedCall(matrix, sqlCol(x)), 1, 2), "Residual")sql(residual, t).eval()
回答于 2023-11-24 18:52