トップ / フィルタ・サンプリング

filter / where

条件に合う行だけを残す。whereはfilterの別名で、書き方はどちらも同じ。

SNOWPARK 静的検証のみ

df.filter(col("age") >= 21)
df.where(col("status") == "active")  # filterの別名

POLARS 実行確認済み

ldf.filter(pl.col("age") >= 21)

挙動・設計の違い

SnowparkはSQLのWHERE句を生成し、複数回のfilter呼び出しはAND条件として自動的に結合される。Polarsも述語プッシュダウンにより、データを読み込む段階で不要な行をスキップしようとする。どちらも「絞り込みをできるだけ早い段階に押し下げる」という最適化方針は共通している。

移行時の落とし穴

SQLの3値論理(TRUE/FALSE/UNKNOWN)にもとづき、Snowparkでは条件式がNULLと評価された行はfilterの結果から除外される。Polarsも既定でnull行は条件を満たさない扱いになるが、否定条件(〜でない、を意味する式)を書いたときに「NULLを含めたいのか除外したいのか」を明示しないと、両者で結果がずれることがある。

フィルタ・サンプリングの他のメソッド

関連する基礎知識

出典・検証情報

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