我正在尝试在spark-SQL中使用百分位功能。
数据:
col1
----
198
15.8
198
198
198
198
198
198
198
198
198
如果我使用下面的代码,则得到的百分位数不正确。
select percentile('col1', .05) from tblname
输出: 106.9
如果我使用下面的代码,则得到的百分位数不正确。
select percentile('col1', .05, 2) from tblname
输出: 24.91000000000001
但是,如果我使用下面的代码,则会得到预期的答复(但我不知道为什么和方式)
select percentile('col1', .05, 100) from tblname
输出: 15.8
有人可以帮助我理解最后一个论点如何改变事情吗?有文件吗?我签出了spark源代码docstring(因为我不知道Scala),但是没有运气。官方网站上也没有。
percentile(col,percent [,frequency])-以给定的百分比返回数字列col的确切百分位数值>。百分比值必须> 0.0到1.0之间。频率值应为正整数