approx_count_distinct:近似去重计数
速查结论
approx_count_distinct(expr[, relativeSD]) 是 Spark SQL 中基于 HyperLogLog++ 算法进行近似去重基数估计的聚合函数。
语法
approx_count_distinct(expr[, relativeSD])
参数说明
| 参数 | 说明 |
|---|---|
| expr | 任意表达式 |
| relativeSD | 可选,允许的最大相对标准偏差。默认值为 0.05 |
示例
> SELECT approx_count_distinct(col1) FROM VALUES (1), (1), (2), (2), (3) tab(col1);
3
常见报错与避坑指南
- 精度 vs 内存的权衡:
relativeSD越小,精度越高,但内存消耗越大。默认值 0.05 通常在精度和内存之间取得较好平衡。对超大规模数据,可适当增大relativeSD以降低内存压力。 - 近似而非精确:该函数返回的是估计值,不保证 100% 精确。如果需要精确去重计数,应使用
count(DISTINCT expr)。
Since: 1.6.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
