hiveql—如何使用列的值范围对配置单元表进行分区

gopyfrb3  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(284)

我有一个包含两列的配置单元表。employee id和salary。
数据如下所示。

Employee ID Salary
1   10000.08
2   20078.67
3   20056.45
4   30000.76
5   10045.14
6   43567.76

我想基于salary列创建分区。例如,salary range 10000到20000、20001到30000的分区。
我如何做到这一点。

sy5wg1nm

sy5wg1nm1#

配置单元不支持范围分区,但可以在数据加载期间计算范围。
创建按薪资范围分区的表:

create table your_table
(
 employee_id bigint,
 salary double
)
partitioned by (salary_range bigint)

插入用于薪资范围计算的用例:

insert overwrite table your_table partition (salary_range)   
select employee_id, salary,  
       case 
           when salary between 10000 and 20000 then 20000
           when salary between 20001 and 30000 then 30000 
           ...
           else ...
       end as salary_range 
from some_table;

相关问题