from __future__ import annotations
import robin_sparkless as rs
def _spark() -> rs.SparkSession:
return rs.SparkSession.builder().app_name("issue_412").get_or_create()
def test_cube_two_columns_variadic() -> None:
spark = _spark()
df = spark.createDataFrame(
[{"dept": "A", "year": 2023}, {"dept": "B", "year": 2023}],
[("dept", "str"), ("year", "int")],
)
out = (
df.cube("dept", "year").agg([rs.count(rs.col("dept")).alias("count")]).collect()
)
assert len(out) >= 1
assert all("count" in r for r in out)
def test_cube_single_list() -> None:
spark = _spark()
df = spark.createDataFrame(
[{"dept": "A", "year": 2023}],
[("dept", "str"), ("year", "int")],
)
out = (
df.cube(["dept", "year"])
.agg([rs.count(rs.col("dept")).alias("count")])
.collect()
)
assert len(out) >= 1