在Impala中无效的随机数排序

时间:2018-04-27 22:30:15

标签: sql impala

当我在Hue中针对Impala数据源运行时,我得到了意外的结果

select id, rand(unix_timestamp(now())) as ord
from (
  select 1 as id union select 2 union select 3 union select 4
) x
order by ord 

我希望通过ord列中出现的任何内容以随机顺序获取行。取而代之的是,我总是得到3,4和1,2,其数字在ord中不是按顺序排列的:

id  ord
3   0.8899110606358904
4   0.3766916056055071
1   0.09029531483086539
2   0.7446466436351866

那么,Impala不了解ORDER BY的哪一部分?或者我错过了什么?

1 个答案:

答案 0 :(得分:0)

似乎是Impala 2.8 and lower has this bug。据称这是在Impala 2.9中修复的,但我还没有测试过。

与此同时,由于我不需要非常强大的随机性,我只是使用了:

order by mod((((unix_timestamp() + MY_ID_COLUMN) * 7621) + 1), 32768)

(这种结果有一定的模式,但它可能足以愚弄一个不经意的观察者。)

感谢Vamsi Prabhala指出我正确的方向。