4

由于 wavg 函数,在 kdb 中计算加权平均值很容易。如何计算两个连续行时间之间的延迟并将这些值用作 wavg 的权重参数?

就像是:

`date`ts xasc select date,ts,mytw:(next ts - ts) wavg mycolumnval from pmd where date=2013.05.22

next在查询中给出以下行列,但我不知道如何减去两个 ts 值并在wavg.

更新 解决方案是使用括号:((next ts) - ts). 请注意,我不能使用deltas[ts]. 这将产生不同的权重:

08:15:19.811    00:00:00.000
08:15:19.811    00:00:00.001
08:15:19.812    00:00:00.014
08:15:19.826    00:00:07.305
08:15:27.131    NULL

这是deltas[ts]

08:15:19.811    08:15:19.811
08:15:19.811    00:00:00.000
08:15:19.812    00:00:00.001
08:15:19.826    00:00:00.014
08:15:27.131    00:00:07.305
4

3 回答 3

1

怎么样:

`date`ts xasc select date,ts,mytw:deltas[ts] wavg mycolumnval from pmd where date=2013.05.22
于 2013-05-22T19:47:48.583 回答
1

'下一个 ts' 周围需要括号:

`date`ts xasc select date,ts,mytw:((next ts) - ts) wavg mycolumnval from pmd where date=2013.05.22
于 2013-05-23T14:43:26.013 回答
0

不应该是: datets xasc select date,ts,mytw: (1 _ deltas ts, 0Nv) wavg mycolumnval from pmd where date=2013.05.22。如果您的 ts 是日期时间,请使用 0Np

于 2013-05-23T06:19:51.457 回答