Grouped over(...) expressions are implemented in cuDF-Polars using a forward-shuffle / local-evaluate / backward-shuffle execution model. This issue tracks remaining grouped-over API coverage that can use that model before we tackle long-term huge-group execution where one group may need to span multiple partitions/ranks.
Initial child issues / feature areas:
Example:
def test_cum_max_over(engine: GPUEngine) -> None:
lf = pl.LazyFrame(
{
"g": ["A", "A", "A", "B", "B"],
"t": [1, 2, 3, 1, 2],
"x": [10, 30, 20, 5, 15],
}
)
q = lf.select(
pl.col("x").cum_max().over("g", order_by="t").alias("x_cum_max")
)
assert_gpu_result_equal(q, engine=engine)
Note: This issue is about near-term grouped over(...) API coverage. Full distributed execution for low-cardinality / huge-group cases can be tracked separately under the broader grouped range-window or streaming ordered-window work.
Grouped
over(...)expressions are implemented in cuDF-Polars using a forward-shuffle / local-evaluate / backward-shuffle execution model. This issue tracks remaining grouped-overAPI coverage that can use that model before we tackle long-term huge-group execution where one group may need to span multiple partitions/ranks.Initial child issues / feature areas:
rolling_*_by(...).over(...): [FEA] Support rolling-by expressions insideover()in cuDF-Polars #23591rolling(...).over(...): [FEA] Support aggregate rolling expressions insideover()in cuDF-Polars #23623cum_min().over(...),cum_max().over(...),cum_prod().over(...), andcum_count().over(...)pct_change().over(...)Example:
Note: This issue is about near-term grouped
over(...)API coverage. Full distributed execution for low-cardinality / huge-group cases can be tracked separately under the broader grouped range-window or streaming ordered-window work.