在 HiveQL 中将变量设置为最大值
Posted
技术标签:
【中文标题】在 HiveQL 中将变量设置为最大值【英文标题】:Set variable to maximum value in HiveQL 【发布时间】:2012-11-14 04:25:30 【问题描述】:我想从表 totalSpeeds 中的数据列(速度)中获取第一个四分位数的值。
为此,我尝试创建一个变量(阈值),然后选择小于或等于它的值。
SET threshold = (SELECT 0.25*MAX(speed) FROM totalSpeeds);
SELECT speed FROM totalSpeeds WHERE speed <= $hiveconf:threshold;
这失败并返回了一个解析错误。有没有更有效的方法来获得前四分位数速度的上限?或者有没有办法调整上述命令以返回第一四分位数的速度?
提前致谢,
安妮塔
【问题讨论】:
【参考方案1】:hive 中有一个内置的 UDF 用于计算百分位数。使用
从 totalSpeeds 中选择百分位数(速度,.25);
UDF 解释:
返回组中列的精确 pth 百分位数。 p 必须介于 0 和 1 之间
同样,我们也可以使用 percentile(speed, array(p1, p2)) 提取多个百分位数
【讨论】:
以上是关于在 HiveQL 中将变量设置为最大值的主要内容,如果未能解决你的问题,请参考以下文章