【问题标题】:Percentile calculation in HIVEHIVE 中的百分位数计算
【发布时间】:2020-05-19 12:27:46
【问题描述】:

如何使用 sql 在 Hive 中计算 25 个百分位数。假设有类别、子类别和销售列。那么如何计算 25% 的销售额呢?我尝试在 hive 中使用percentile(sales, 0.25),但它抛出了一个错误:

编译语句时出错:FAILED: NoMatchingMethodException 类 org.apache.hadoop.hive.ql.udf.UDAFPercentile 没有匹配方法(双精度,十进制(2,2))。可能的选择:FUNC(bigint, array) FUNC(bigint, double)

【问题讨论】:

  • 请提供样本数据和期望的结果,以便我们知道您所说的“计算 25 个百分位数”是什么意思。

标签: sql hive hiveql percentile


【解决方案1】:

Documentation 说:

只能为整数值计算真正的百分位数。采用 PERCENTILE_APPROX 如果您的输入是非整数。

percentile_approx 用于非整数值。 percentile_approx(DOUBLE col, p [, B]) - 返回组中数值列(包括浮点类型)的近似第 p 个百分位数。 B 参数以内存为代价控制近似精度。较高的值会产生更好的近似值,默认值为 10,000。当 col 中不同值的数量小于 B 时,这将给出一个精确的百分位值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2013-06-20
    • 1970-01-01
    • 2016-07-28
    • 2017-08-29
    • 2012-10-28
    相关资源
    最近更新 更多