トップ / 集約・構造変換
重複を除いた値の種類数(ユニーク数)を求める。近似版は誤差を許容する代わりに高速。
df.select(count_distinct(col("user_id")))
df.select(approx_count_distinct(col("user_id")))
df.select(pl.col("user_id").n_unique())
df.select(pl.col("user_id").approx_n_unique())
正確版(count_distinct↔n_unique)・近似版(approx_count_distinct↔approx_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)