トップ / 結合・集合演算
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)