トップ / 集約・構造変換

count_distinct / approx_count_distinct

重複を除いた値の種類数(ユニーク数)を求める。近似版は誤差を許容する代わりに高速。

SNOWPARK 静的検証のみ

df.select(count_distinct(col("user_id")))
df.select(approx_count_distinct(col("user_id")))

POLARS 実行確認済み

df.select(pl.col("user_id").n_unique())
df.select(pl.col("user_id").approx_n_unique())

挙動・設計の違い

正確版(count_distinctn_unique)・近似版(approx_count_distinctapprox_n_unique)とも対になる関数がPolars側に存在する。[1,2,2,3,3,3]で実行して確認したところ、n_unique()は正確に3を返す。

移行時の落とし穴

近似版を使う場面の判断はSnowpark側とPolars側で事情が異なる。Snowflakeのapprox_count_distinctはHyperLogLogアルゴリズムでビッグデータに対する分散集計のコストを下げるために用意されている。一方Polarsはメモリ上の処理なので、よほど巨大なデータでない限り正確版のn_unique()で十分なことが多く、近似版を使う必然性はSnowflake側ほど高くない。Snowpark側のコードにならって機械的に近似版へ置き換えると、Polars側では不要な誤差を持ち込むだけになる場合がある。

集約・構造変換の他のメソッド

出典・検証情報

Polars 1.36.1 で実行確認 / Snowpark Python SDK 1.51.1 で静的検証(2026-08-30)