トップ / ウィンドウ関数

Window.partition_by / Window.order_by

グループ(パーティション)ごとに、行をまたいだ計算をするための土台を定義する。

SNOWPARK 静的検証のみ

Window.partition_by("department").order_by(col("salary").desc())

POLARS 実行確認済み

# Window仕様を単独定義せず、各Expressionの末尾に .over("department") を付ける

挙動・設計の違い

SnowparkはPySpark由来のWindowSpecオブジェクトをWindow.partition_by(...).order_by(...)で組み立て、後述のrank()等の式に.over(window_spec)として渡す。Polarsには独立した「窓の仕様オブジェクト」という概念が無く、集計したい式の末尾に直接.over("department")を付けるだけでパーティションごとの計算になる。

移行時の落とし穴

Snowparkは並べ替え(order_by)をWindowSpecの中で一括指定できるが、Polarsの.over()自体には並べ替えを指定する引数が無い。row_numberlag/leadのようにパーティション内の順序が結果を左右する計算をPolarsで行うときは、.over()を付ける前にsort()でデータ全体を正しい順序に並べておく必要がある(次のrow_numberのページを参照)。

ウィンドウ関数の他のメソッド

出典・検証情報

Polars 1.43.2 で実行確認 / Snowpark Python SDK 1.54.0 で静的検証(2026-08-24)