Hive 从配置单元中的n个编号列表中随机选取编号

Hive 从配置单元中的n个编号列表中随机选取编号,hive,Hive,HIVE中是否有一个函数可以帮助我从列表中随机选择一个数字。 例如:我想从下面的列表中选择一个随机数 1000 2000 4000 6000 8000 10000 注意:这些值不在表中,我们有6个不同的硬编码变量,我们需要选择其中一个。选择a、b、c, SELECT a, b, c, CASE WHEN nonsense <=1.0 THEN 1000 WHEN nonsense <=2.0 THEN 2000 ... WHEN n

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

1000
2000
4000
6000
8000
10000
注意:这些值不在表中,我们有6个不同的硬编码变量,我们需要选择其中一个。

选择a、b、c,
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

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

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

什么时候需要这个随机选择的数字?为什么不把它们放在表中作为一个选项?嗨,mattinbits,非常感谢你的回复。我尝试了这个方法,但由于数组不支持非常量数据类型,它抛出了一个错误。它在[]方括号中期望一个常量值,但我如何传递随机数:(