tmoving

Syntax

tmoving(func, T, funcArgs, window)

Arguments

func is a function.

T is a non-strictly increasing vector of temporal or integral type. It cannot contain NULL values.

funcArgs are the parameters of func. They can be vectors/dictionaries/tables. It is a tuple if there are more than one parameter of func, and all parameters must have the same size.

window is a scalar of positive integer or DURATION type indicating the size of the sliding window.

For each element Ti in T:

  • When T is an integral value, the range of the corresponding window is (Ti - window, Ti]

  • When T is a temporal value, the range of the corresponding window is (temporalAdd(Ti, -window), Ti]

Please see tmFunctions for the parameters and windowing logic.

Details

Apply the function/operator to a sliding window of the given objects.

The tmoving template always returns a vector with the same number of elements as the number of rows in the input arguments.

Each of the built-in tm-functions such as tmsum, tmcount and tmavg is optimized for its specific use case. Therefore, they have much better performance than the tmoving template.

Examples

date=2021.08.01 2021.08.02 2021.08.02 2021.08.02 2021.08.03 2021.08.04 2021.08.05 2021.08.06 2021.08.09 2021.08.10 2021.08.14
value=1..11
t = table(date,value)
timer(100) select date, value, tmoving(avg,date,value,3d) from t;
// output
Time elapsed: 1.995 ms
timer(100) select date, value, tmavg(date, value, 3d) from t;
// output
Time elapsed: 0.997 ms

As shown in the output, when the window slides to 2021.08.09, the range is [2021.08.07, 2021.08.08, 2021.08.09]. As the values in 2021.08.07 and 2021.08.08 are missing, they do not participate in the calculation.

date value tmoving_sum
2021.08.01 1 1
2021.08.02 2 1.5
2021.08.02 3 2
2021.08.02 4 2.5
2021.08.03 5 3
2021.08.04 6 4
2021.08.05 7 6
2021.08.06 8 7
2021.08.09 9 9
2021.08.10 10 9.5
2021.08.14 11 11