emmax_time
emmax_time
creates a time-based EMMAX (exponential moving maximum) for an update_by
table operation. The formula for the time-based EMMAX of a column is:
Where:
- is the difference between time and in nanoseconds.
- is
decay_time
in nanoseconds, an input parameter to the method. - is the exponential moving maximum of at time step .
- is the current value.
- denotes the time step, ranging from to , where is the number of elements in .
Syntax
emmax_time(
ts_col: str,
decay_time: Union[int, str],
cols: list[str],
op_control: OperationControl = None,
) -> UpdateByOperation
Parameters
Parameter | Type | Description |
---|---|---|
ts_col | str | The name of the column in the source table containing timestamps. |
decay_time | Union[int, str] | The decay rate. This can be expressed as an integer in nanoseconds or a string duration, e.g., |
cols | Union[str, list[str]] | The string names of columns to be operated on. These can include expressions to rename the output, e.g., |
op_control | OperationControl | An |
Returns
An UpdateByOperation
to be used in an update_by
table operation.
Examples
The following example performs an update_by
on the source
table using two emmax_time
operations. Each uses a different decay_time
value to demonstrate how it affects the output.
from deephaven.updateby import emmax_time
from deephaven.time import to_j_instant
from deephaven import empty_table
base_time = to_j_instant("2023-05-01T00:00:00 ET")
source = empty_table(20).update(
["Timestamp = '2023-05-01T00:00:00 ET' + i * SECOND", "X = randomInt(0,25)"]
)
result = source.update_by(
ops=[emmax_time(ts_col="Timestamp", decay_time="PT00:03:00", cols="EmMaxX = X")]
)
result2 = source.update_by(
ops=[emmax_time(ts_col="Timestamp", decay_time="PT00:01:00", cols="EmMaxX = X")]
)
- result
- result2
- source