需要注意,单引号在单个字符时表示CHAR类型。用typestr函数可以查看数据类型 不是单个字符时,三种写法没有差别,都是STRING类型, SYMBOL是特殊的STRING类型。
回答于 2021-12-12 17:56
报错的原因:函数(比如这里的append_plan函数)的参数里面没有加mutable的话,调用这个函数的时候会把这个对象(比如这里的csEngine1)设成readOnly,这时候如果有另一个线程去写这个对象(你的第一个订阅就在写csEngines1)的话会报上述错误。 解决方法一:订阅sTb_join12 的两个subscribeTable函数,传相同的hash值。...
回答于 2021-12-12 17:35
原始的矩阵有列名,输出也会有列名: 原始的矩阵没有列名,会得到如下输出,输出中没有列名。 所以建议你检查一下是不是corrMatrix前,你的原始matrix就没有列名,如果是用下rename!就好了
回答于 2021-12-05 22:36
方法一: select * from lj(t1, t2, `a`b) where isNull(t2.a) 方法二: s = set(string(t2.a)+string(t2.b)) select * from t1 where not string(t1.a)+string(t1.b) in s
回答于 2021-12-05 22:24
如果是在一个局域网,本地运行之后,别人就可以就通过ip+端口访问就可以了。 如果是给外网访问,需要暴露外网的IP,然后外面客户端通过这个外网IP访问,能够找到安装server的物理机即可访问这台物理机上的dolphindb server。 具体配置可以以下参考教程,7.4 如何设置集群管理器通过外网访问 章节 https://gitee.com/dolph...
回答于 2021-12-05 22:13
每行数据的多个列要同时满足一些条件才输出的话,可以用rowAnd函数。 你的需求可以参考一下示例: sym = take(`a`b`c, 110) id = 1..100 join take(int(),10) id2 = take(int(),10) join 1..100 t = table(sym, id,id2) t[each(isValid, t.values()).rowAnd()] 输出结果:
回答于 2021-12-05 19:42
这里只传一个分区字段就好,组合分区也是一样的。你这个例子,建议传"symbol" ,就能实现并发写入了。当然,传"datetime"也可以运行,但是会发现并不能并发,因为你只写入一天的数据,即datetime只有一个分区,是没法并发的。 下面是PartitionedTableAppender的基本原理: 首先,DolphinDB不允许多个writer同时将数据写...
回答于 2021-12-05 19:19
函数ftmmin可以使用,forward time moving min 更进一步,可以利用ftmmin自己封装一个函数 def fmmin(x){len = size(x); return ftmmin(1..len, x, len)}
回答于 2021-12-05 18:47
跟序列相关的分组可以使用segment函数。上述分组可以像这样实现: //模拟输入数据 t = table(1..12 as rows ,take(2021.09.29, 12)as date, [0, 0,0.3,0.3,0, 0.5,0.3,0.5,0,0,0.3,0] as v) //实现分组 minV = 0.3 select * from t context by segment(v>=minV) having v= max(v) and v>=minV limit 1 输入->...
回答于 2021-11-28 22:32
可以用以下代码实现,分组的关键在iif(accumulate(caclCumVol{1500000}, volume) ==volume, time, NULL).ffill() 这个表达式。 // 自定义一个累计函数calcCumVol,如果当前这个组需要包含这个点,返回累计的volume,否则开始一个新的组,也就是返回当前点的volume。 def caclCumVol(target, a, b){ newVal = a + b if(ne...
回答于 2021-11-28 20:48