Заказ по случайному номеру не работает в Impala - PullRequest
0 голосов
/ 28 апреля 2018

Когда я запускаю это в 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 с номерами в порядке, которые не в порядке:

id  ord
3   0.8899110606358904
4   0.3766916056055071
1   0.09029531483086539
2   0.7446466436351866

Итак, какую часть ORDER BY Impala не понимает? Или чего мне не хватает?

1 Ответ

0 голосов
/ 30 апреля 2018

Кажется, что Impala 2.8 и ниже имеет эту ошибку . Утверждается, что это исправлено в Impala 2.9, но я еще не проверял.

А пока мне не нужна очень сильная случайность, я просто использовал:

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

(У таких результатов есть определенная закономерность, но, вероятно, этого достаточно, чтобы одурачить случайного наблюдателя.)

Спасибо Вамси Прабхале за то, что он указал мне правильное направление.

...