2012-11-14 60 views
2

我想從表totalSpeeds中的數據列(速度)中獲取第一個四分位數值。將變量設置爲HiveQL中的最大值

爲此,我嘗試創建一個變量(閾值),然後選擇小於或等於它的值。

SET threshold = (SELECT 0.25*MAX(speed) FROM totalSpeeds); 
SELECT speed FROM totalSpeeds WHERE speed <= ${hiveconf:threshold}; 

失敗並返回一個分析錯誤。是否有更高效的方式獲得第一個四分之一速度的上限?還是有一種方法來調整上述命令返回第一四分位速度?

由於提前,

梅豔芳

回答

0

有一個內置的UDF在蜂巢計算百分位數。使用來自totalSpeeds

選擇百分位數(速度,0.25);

說明UDF的:

返回組在列的確切PTH百分。 p必須是0和1之間

同樣,我們可以通過使用百分位數(速度,陣列(P1,P2))

提取多個百分位數也