Группа процентилей улья по двум переменным

У меня есть таблица Hive, в которой я хочу найти 10-й процентиль, медиану и 90-й процентиль значения в зависимости от местоположения/дня недели. Макет таблицы ниже. Как я могу написать запрос, чтобы в столбцах выходной таблицы были местоположение, день недели, 10-й процентиль, медиана и 90-й процентиль MyValue? (Предположим, что фактическая таблица имеет много разных местоположений и несколько записей для каждой комбинации местоположения/дня недели)

Я пытался:

create table myschema.my_output_table as
select location, weekday,
percentile(MyValue,0.1) over location,weekday as Weekday10pctile
from myschema.my_input_table

Образец данных:

Location      Weekday       MyValue
Location_A    Monday        2.844958857
Location_A    Monday        1.22455235
Location_A    Monday        2.415189236
Location_A    Monday        2.162431558
Location_A    Tuesday       2.200264375
Location_A    Tuesday       1.218341845
Location_A    Tuesday       1.668882003
Location_A    Tuesday       0.077343061
Location_A    Wednesday     2.977162672
Location_A    Wednesday     2.059018125
Location_A    Wednesday     2.309147998
Location_A    Wednesday     1.241566476

person Ralph    schedule 24.08.2018    source источник
comment
что ты уже испробовал?   -  person hlagos    schedule 24.08.2018


Ответы (1)


Используйте функцию percentile_approx, поскольку значения в столбце равны DOUBLE. Обратите внимание, что возвращаемые значения могут быть не из набора данных.

select location, weekday,
percentile(MyValue,0.1) over w as Weekday10pctile,
percentile(MyValue,0.9) over w as Weekday90pctile
from myschema.my_input_table
window w as (partition by location,weekday)

percentile_approx описание из документации

процентиль_приблизительно (DOUBLE col, p [, B])

Возвращает приблизительный p-й процентиль числового столбца (включая типы с плавающей запятой) в группе. Параметр B управляет точностью аппроксимации за счет памяти. Более высокие значения дают более точные приближения, и значение по умолчанию равно 10 000. Когда количество различных значений в столбце меньше, чем B, это дает точное значение процентиля.

person Vamsi Prabhala    schedule 24.08.2018