Hive 由两个变量组成的蜂巢百分位数组

Hive 由两个变量组成的蜂巢百分位数组,hive,hiveql,Hive,Hiveql,我有一个配置单元表,我想在其中查找某个位置/工作日的值的第10百分位、中位数和第90百分位。下面是该表的模型。如何编写查询,使输出表列为MyValue的位置、工作日、第10百分位、中位数和第90百分位?(假设实际表有许多不同的位置,每个位置/工作日组合有多个条目) 我试过: create table myschema.my_output_table as select location, weekday, percentile(MyValue,0.1) over location,weekday

我有一个配置单元表,我想在其中查找某个位置/工作日的值的第10百分位、中位数和第90百分位。下面是该表的模型。如何编写查询,使输出表列为MyValue的位置、工作日、第10百分位、中位数和第90百分位?(假设实际表有许多不同的位置,每个位置/工作日组合有多个条目)

我试过:

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

使用
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)

百分位_近似值(双列,p[,B])

返回组中数值列(包括浮点类型)的近似第pth个百分位数。B参数以内存为代价控制近似精度。值越高,近似值越好,默认值为10000。当col中不同值的数量小于B时,这将给出一个精确的百分位值


到目前为止你试过什么?