【问题标题】:Handling Nulls while calculating percentiles in Hive在 Hive 中计算百分位数时处理 Null
【发布时间】:2019-11-13 12:08:59
【问题描述】:

在计算百分位数时处理空值时遇到了一些麻烦。下面是样本数据。

enter image description here

现在使用的代码: percentile(column_1, array(0, 0.25, 0.50, 0.75, 1)) as column_1_p

这里它在计算百分位数时也考虑空值。但我需要消除它们,只使用其他有效值来计算百分位数。我找不到任何其他功能可以做到这一点。

数据:值范围从零到 1000。我不能用零替换空值,因为我的数据中已经有零了。

非常感谢这里的任何帮助。

提前致谢。

【问题讨论】:

  • 一种选择是创建一个非空值的临时表,然后使用它来计算百分位数或创建 Hive UADF。

标签: sql hive hiveql


【解决方案1】:

使用coalesce()

percentile(coalesce(column_1, 0), array(0, 0.25, 0.50, 0.75, 1))

或者如果你想考虑其他columns

percentile(coalesce(column_1, column_2, column_3..., 0), array(0, 0.25, 0.50, 0.75, 1))

【讨论】:

  • 它是否用零替换所有空值?我不希望这种情况发生,因为我的数据中已经有零了。
  • @kumar,是的,它将用零替换空值。你介意分享预期的输出吗?
  • 我的表中的空值不应用于任何计算。我的值范围从零到 1000,并且需要 (0,0.25.0.5,0.75,1) 的百分位值...我不能用零替换空值,因为我已经有零了
猜你喜欢
  • 1970-01-01
  • 2020-05-19
  • 2011-04-27
  • 2011-12-29
  • 2013-06-20
  • 2017-10-12
  • 2017-10-19
  • 1970-01-01
  • 2016-07-28
相关资源
最近更新 更多