トップ / 結合・集合演算

intersect

2つのDataFrameの両方に存在する行だけを残す(積集合)。

SNOWPARK 静的検証のみ

df1.intersect(df2)

POLARS 実行確認済み

ldf1.join(ldf2, on=ldf1.collect_schema().names(), how="semi")

挙動・設計の違い

SnowparkはSQLのINTERSECTに変換される。PolarsのLazyFrameには直接のintersectメソッドが無いため、全列をキーにしたsemi結合で代用する。実行して確認したところ、この書き方で正しく積集合が得られる。

移行時の落とし穴

how="semi"結合は「もう片方に一致する行があるかどうか」だけを見る結合で、通常のjoinと違って結合相手側の列は出力に含まれない(左側の列だけが残る)。SQLのINTERSECTとは呼び方も返す列も違う概念なので、単純な言い換えとして覚えるより「semi結合」という独立した仕組みとして理解する方が誤解が少ない。

結合・集合演算の他のメソッド

出典・検証情報

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