トップ / ウィンドウ関数

lag

パーティション内で、1つ前(過去)の行の値を取得する。

SNOWPARK 静的検証のみ

lag(col("salary"), 1).over(window_spec)

POLARS 実行確認済み

ldf.sort(["department", "employee"]).with_columns(pl.col("salary").shift(1).over("department").alias("prev_salary"))

挙動・設計の違い

SnowparkはSQLのLAG()関数に変換される。Polarsは.shift(1)(値を1つ後ろにずらす)で同じ効果を得る。実行して確認したところ、各パーティションの先頭行は「1つ前が無い」ため両APIともNULL/nullになる。

移行時の落とし穴

Snowparkのlagにはdefault_value(前の行が無いときの既定値)やignore_nullsという引数があり、Polarsのshiftにもfill_valueという対応する引数がある。既定のまま使うとどちらも欠損値はNULLのままになるので、「先頭行を0で埋めたい」のような要件があるときはこれらの引数を明示的に使う。

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

出典・検証情報

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