cum_sum

cum_sum calculates a cumulative sum in an update_by table operation.

Syntax

cum_sum(cols: list[str]) -> UpdateByOperation

Parameters

ParameterTypeDescription
colslist[str]

The column(s) to be operated on. These can include expressions to rename output columns (e.g., NewCol = Col). If None, the cumulative sum is calculated for all applicable columns in the table.

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 the cum_sum operation. No grouping columns are given, so the cumulative sum is calculated for all rows in the table.

from deephaven.updateby import cum_sum
from deephaven import empty_table

source = empty_table(10).update(["Letter = (i % 2 == 0) ? `A` : `B`", "X = i"])

result = source.update_by(ops=cum_sum(cols=["SumX = X"]), by=[])

The following example builds off the previous by specifying Letter as the grouping column. Thus, the cumulative sum of X is calculated for each unique letter.

from deephaven.updateby import cum_sum
from deephaven import empty_table

source = empty_table(10).update(["Letter = (i % 2 == 0) ? `A` : `B`", "X = i"])

result = source.update_by(ops=cum_sum(cols=["SumX = X"]), by=["Letter"])

The following example builds off the previous by calculating the cumulative sum of two columns using the same UpdateByOperation.

from deephaven.updateby import cum_sum
from deephaven import empty_table

source = empty_table(10).update(
    ["Letter = (i % 2 == 0) ? `A` : `B`", "X = i", "Y = randomInt(1, 11)"]
)

result = source.update_by(ops=cum_sum(cols=["SumX = X", "SumY = Y"]), by=["Letter"])

The following example builds off the previous by specifying two grouping columns: Letter and Truth. Thus, each group is a unique combination of letter and boolean value in those two columns, respectively.

from deephaven.updateby import cum_sum
from deephaven import empty_table

source = empty_table(10).update(
    [
        "Letter = (i % 2 == 0) ? `A` : `B`",
        "Truth = randomBool()",
        "X = i",
        "Y = randomInt(1, 11)",
    ]
)

result = source.update_by(
    ops=cum_sum(cols=["SumX = X", "SumY = Y"]), by=["Letter", "Truth"]
)