トップ / ウィンドウ関数
パーティション内で並べ替えた順序の、先頭の値・末尾の値を各行に持たせる。
first_value(col("salary")).over(window_spec)
last_value(col("salary")).over(window_spec)
pl.col("salary").first().over("department")
pl.col("salary").last().over("department")
SnowparkはSQLのFIRST_VALUE/LAST_VALUEウィンドウ関数に変換される。Polarsは通常の集約メソッドfirst()/last()を.over()と組み合わせることで、同じ「グループ内の先頭・末尾の値を全行に展開する」処理になる。実行して確認したところ、departmentでグループ化したsalary列で、両APIとも各グループの先頭行・末尾行の値が全行に複製される。
「先頭・末尾」が何を基準にした順序かは、事前の並べ替えに完全に依存する。SnowparkはWindow仕様のorder_byが順序を決めるが、Polars側は.over()を呼ぶ前にldf.sort(...)で明示的に並べ替えておく必要がある(lag/leadのページと同じ注意点)。並べ替えを忘れると、Snowflake側では意図した順序でFIRST_VALUEが決まるのに、Polars側は元のデータの物理的な並び順のままの「先頭」を返してしまう。
Polars 1.36.1 で実行確認 / Snowpark Python SDK 1.51.1 で静的検証(2026-08-30)