Могу ли я использовать 0 и 1 значения в quantilesExact - PullRequest
0 голосов
/ 17 января 2020

Из документации quantile функция документация :

Рекомендуется использовать значение уровня в диапазоне [0,01, 0,99]. Не используйте значение уровня, равное 0 или 1 - используйте функции min и max для этих случаев.

Применимо ли это также к quantileExact и quantilesExact функциям?

В своих экспериментах я обнаружил, что quantileExact(0) = min и quantileExact(1) = max, но не могу быть в этом уверен.

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Эта рекомендация не о точности, а о сложности квантиля *. quantileExact намного тяжелее, чем max min. Смотрите разницу во времени, мин / макс, в 8 раз быстрее даже на небольшом наборе данных.

create table Speed Engine=MergeTree order by X  
as select number X from numbers(1000000000);

SELECT min(X), max(X) FROM Speed;
┌─min(X)─┬────max(X)─┐
│      0 │ 999999999 │
└────────┴───────────┘
1 rows in set. Elapsed: 1.040 sec. Processed 1.00 billion rows, 8.00 GB (961.32 million rows/s., 7.69 GB/s.)

SELECT quantileExact(0)(X), quantileExact(1)(X) FROM Speed;
┌─quantileExact(0)(X)─┬─quantileExact(1)(X)─┐
│                   0 │           999999999 │
└─────────────────────┴─────────────────────┘
1 rows in set. Elapsed: 8.561 sec. Processed 1.00 billion rows, 8.00 GB (116.80 million rows/s., 934.43 MB/s.) 
0 голосов
/ 18 января 2020

Оказывается, безопасно использовать значения 0 и 1 для функций quantileExact и quantilesExact.

...