从Hive中的n个数字列表中随机选取数字

时间:2015-09-02 09:16:21

标签: hive

HIVE 中是否有一项功能可以帮助我从列表中随机选择一个数字。 例如:我想从下面的列表中选择一个随机数

1000
2000
4000
6000
8000
10000

P.S。这些值不存在于表中,我们有6个不同的硬编码变量,我们需要选择其中一个。

2 个答案:

答案 0 :(得分:1)

这可以通过构造可能值的数组来完成,并使用RAND()来选择一个:

SELECT a, b, c, Array(1000, 2000, 6000, 8000, 10000)[Cast((FLOOR(RAND()*6.0)) as INT)] 
FROM TABLE;

答案 1 :(得分:0)

SELECT a, b, c,
  CASE WHEN nonsense <=1.0 THEN  1000
       WHEN nonsense <=2.0 THEN  2000
       ...
       WHEN nonsense <=5.0 THEN  8000
       ELSE                     10000
  END AS more_nonsense
FROM
 (SELECT a, b, c, RAND()*6.0 AS nonsense
  FROM ...
  WHERE ...
 ) x

“当其他一切都失败时,请考虑阅读文档”:

DOUBLE rand()

  

返回一个随机数(从一行变为另一行)   从0到1均匀分布。

CASE WHEN ELSE END