上述脚本,在 DolphinDB 会按行取出赋值,每个变量都是一个字典,如: t = table(['a', 'b', 'c'] as sym, [1, 2, 3] as val) res_a, res_b, res_c = select * from t where sym in ['a', 'b', 'c'] res_a // output val->1 sym->'a' 如果要实现 name = 'a' 赋值给 res_a, name = 'b' 赋值给 res_b...的效果,可...
回答于 2023-04-07 10:43
ROTOCOL_ARROW 协议是使用了apache arrow 的方案,是通用的序列化方案,从使用场景来看,ROTOCOL_ARROW 最适用于从上游数据库到下游消费,全部使用 arrow 格式作为中间格式的场景,可以方便地在各个组件之间传递,只需要付出从数据库取出数据这一次序列化开销,后续不需要序列化和反序列化。PROTOCOL_DDB是我们最常用的通信...
回答于 2023-04-07 10:30
请问您是什么版本的server,目前有个类似的 bug 已经于2.00.9.3 / 1.30.21.3 版本修复(目前还未发布),您可以用 version() 函数查询一下 server 的版本。目前该版本还未发布,等近期发布后,您再尝试升级版本。
回答于 2023-03-27 11:31
目前没有计算矩阵的秩的函数,可以通过下述脚本判断自变量矩阵是否为满秩: det(x.transpose() ** x) != 0 也可以自定义函数求秩(非零奇异值的个数等于矩阵的秩) def matrixRank(m) { return sum 0!=svd(m, computeUV=false);}
回答于 2023-03-22 18:04
参考 python API 教程 5.4.2 章节的说明, 上传的表中包含 Python decimal.Decimal 对象时,必须确保 DECIMAL 类型列的所有数据具有相同的小数位数,否则以第一行数据的精度为准,您的第一行数据精度为四位小数,因此 3 位小数的数据上传后会发生数据错误。 可以将源码中生成 decimal 类型的代码改为: price_list = [Dec...
回答于 2023-03-22 17:16
对于题目中的例子有两种方法可以实现: * 方法一:case 语句(1.30.21/2.00.9 版本开始支持) select case when symbol=`a then rowMin(price1, price2, price3) else rowAvg(price1, price2, price3) end as col1, case when symbol=`a then rowMax(price1, price2, price3) else rowStd(price1, price2, price3) end a...
回答于 2023-03-22 16:47
根据上图代码,可以推断此处的需求是进行控制填充,直接用 nullFill 函数进行即可。如: t = table(1.0 2.0 NULL 3.3 as open, NULL 1.3 NULL 2.2 as low)nullFill(t, 0) 此处 tb_fj[col, <isNull(col)>] 中,col 必须是列变量,而不能是字符串,可以参考下述代码进行改写: id = 1..10x = rand(NULL 10.0, 10)t ...
回答于 2023-03-22 15:23
此处是因为 where 语句先于 select 语句执行,所以筛选出的 9:31m 的数据只有一条,其 prev 为空值,计算后结果为空。详见 SQL 执行顺序的文档。 1.30.21 / 2.00.9 版本后支持使用 case when 语句,可参考下述脚本对 SQL 语句进行修改: time = 09:00m + 1..60 b_sum = 1..60 t = table(time, b_sum) update t set b_sum...
回答于 2023-03-22 14:53
根据你的报错信息:The parameter sortColumns is not defined in function createPartitionedTable 首先你需要检查一下 server 是否是 200 的版本,因为 130 的版本不支持 TSDB,而 sortColumns 是 TSDB 引擎下表特有的参数。 其次根据你的代码,sortColumns=`UpdateTime`SecurityID 指定不符合规范,因为 TSDB 引擎要求...
回答于 2023-03-22 10:51
除上述方法外,还可以通过方法二:通过 cutPoints 函数,但由于范围包含右边界,需要去掉最后一个数据。cutPoints(dataVector, ceil(dataVector.size()\5))方法三:仅 200 版本支持,通过列式元组取数特性实现:cut(v, 5).setColumnarTuple!()[0]
回答于 2023-03-21 17:41