トップ / 結合・集合演算
2つのDataFrameの両方に存在する行だけを残す(積集合)。
df1.intersect(df2)
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)