cume_dist:累积分布值
速查结论
cume_dist() 是 Spark SQL 中用于计算一个值在分区中相对于所有值的累积分布位置的窗口函数。
语法
cume_dist() OVER (PARTITION BY expr ORDER BY expr [ASC|DESC])
参数说明
| 参数 | 说明 |
|---|---|
| 无显式参数 | cume_dist() 不接收显式参数,它基于 OVER 子句中的 ORDER BY 列自动计算累积分布。 |
示例
> SELECT a, b, cume_dist() OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 0.6666666666666666
A1 1 0.6666666666666666
A1 2 1.0
A2 3 1.0
常见报错与避坑指南
- 排序依赖:
cume_dist()的结果完全依赖于ORDER BY子句。如果不指定ORDER BY,结果可能不符合预期。请确保在OVER子句中指定有意义的排序。 - 并列值的处理:对于排序相同的行,
cume_dist()返回相同的累积分布值(取最后一行所在位置的比例)。这意味着并列值不会产生间隙。
Since: 2.0.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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