DolphinDB支持链式语法,这样很多操作可以在一个语句中完成。很多修改类的操作,DolphinDB提供了本地修改的功能,也就是修改完指定的object后,函数返回该object。这类函数的命名都以!结尾,譬如update!,reorderColumns!, rename!, replace!等。 上面例子需要对表进行修改,可以使用update!函数, https://www.dolphind...
回答于 2021-06-15 15:56
可以使用msum函数对num这列做窗口为14的滑动求和计算。计算之前,对num这列做一些变换,譬如把负数变为0,或把正数变为0. select *, msum(iif(num > 0, num, 0), 14) as pmsum, msum(iif(num < 0, num, 0), 14) as nmsum from t
回答于 2021-06-15 15:55
DolphinDB是一个times series database (TSDB),对序列数据的建模比关系数据库容易很多。DolphinDB中的一个表的一个列无论在磁盘还是内存中都是列式存储的。在内存中用一个vector来表示。 //计算由负转正的行数 select count(*) from t where value > 0 and prev(value) < 0 //计算由正转负的行数 select count(...
回答于 2021-06-15 15:53
DolphinDB针对时序数据处理,在SQL中增加了一个context by子句,也就是说数据先按照context by后面指定的字段进行分组,每一个组内部再应用序列函数。 上面的例子其实已经使用了context by,只不过只按照股票一个字段进行分组,再增加一个日期字段即可。 n_move=5 t1= select concatDateTime(trade_date,trade_time) as...
回答于 2021-06-15 15:52
DolphinDB中的SYMBOL类型相当于别的语言中的枚举类型。在用户层面上感觉到SYMBOL类型就是字符串类型,但在内存和磁盘中表示的时候,实际上是一个INT类型。所以当我们使用int函数转换的时候,实际上返回的是内部的编码。如果要转换成字符串代表的数值类型,有两种办法:(1)转换成long类型,然后再转化成int类型;(2)换...
回答于 2021-06-15 15:51
如果只是想找到某一个数据的下标,可以使用at函数 v = rand(1 -1, 10) at(v == 1) [1,3,5,8,9] 如果想分组列出所有数据的下标,使用groups函数 groups(v) 1->[1,3,5,8,9] -1->[0,2,4,6,7]
回答于 2021-06-15 15:50
//步骤一//累积量实时预处理,此函数定义放到createSubStreamingEnv函数的前面def calcTradeVolumeAndAmount(mutable dictVolume, mutable dictAmount, mutable tsAggrKline, msg){ t = select sym, timestamp, prev(cumVolume) as prevCumVolume, prev(cumAmount) as prevCumAmount from msg context by sym update t...
回答于 2021-06-15 15:49
上面的例子之所以报错,是因为a是一个tuple,而不是一个常规的数组。有两种解决办法。(1)将tuple改成array a=["0001","002","003"] b = a.int() (2)高阶函数each和int函数配合使用 a=("0001","002","003") b = each(int, a)
回答于 2021-06-15 15:48
执行下列命令可以解决 apt-get install -y tzdata 参考链接:https://stackoverflow.com/que...
回答于 2021-06-15 15:44