トップ / 集約・構造変換

array_agg

グループ内の複数行の値を、1つの配列(リスト)にまとめる。

SNOWPARK 静的検証のみ

df.group_by("dept").agg(array_agg("name").alias("members"))

POLARS 実行確認済み

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)