Вычисление взвешенных средних легко в kdb благодаря функции wavg. Как рассчитать задержку между двумя последовательными рядами раз и использовать эти значения в качестве параметра весов для wavg?Как рассчитать средневзвешенное по времени значение kdb?
Что-то вроде:
`date`ts xasc select date,ts,mytw:(next ts - ts) wavg mycolumnval from pmd where date=2013.05.22
next
дает следующий столбец строки в запросе, но я не могу понять, как вычесть два тс значения и использовать их в 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
вы можете дать пример вывода вы ожидаете? Также в вашем calc, (next ts - ts) будет оцениваться справа налево, поэтому он будет просто следующий в списке нулей. Здесь вы должны использовать дельта. – user1895961