Hive 由两个变量组成的蜂巢百分位数组
我有一个配置单元表,我想在其中查找某个位置/工作日的值的第10百分位、中位数和第90百分位。下面是该表的模型。如何编写查询,使输出表列为MyValue的位置、工作日、第10百分位、中位数和第90百分位?(假设实际表有许多不同的位置,每个位置/工作日组合有多个条目) 我试过: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
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时,这将给出一个精确的百分位值
到目前为止你试过什么?