トップ / 集約・構造変換
グループ内の複数行の値を、1つの配列(リスト)にまとめる。
df.group_by("dept").agg(array_agg("name").alias("members"))
df.group_by("dept").agg(pl.col("name").implode().alias("members"))
Snowparkはarray_aggという専用の集約関数をSQLのARRAY_AGGとして呼び出す。Polarsには同名の集約関数は無く、列をリストへ「圧縮する」という意味のimplode()を使う。実行して確認したところ、group_by().agg()の中ではimplode()を書かなくても、他の集約関数(sum等)を適用しない列は自動的にリスト化される(pl.col("name")だけでも同じ結果になる)。
Polars側は明示的な集約関数を書かないとリストになる「暗黙の挙動」に見えるため、どの列が集約されているのか意図が伝わりにくい。array_aggに相当する処理だと分かるように、implode()を明示的に書いておくとSnowpark側のコードと対応が取りやすい。
Polars 1.36.1 で実行確認 / Snowpark Python SDK 1.51.1 で静的検証(2026-08-30)