使用给定条件向hive表添加新列

时间:2017-12-28 07:51:43

标签: hive hiveql

我有一个名为Data的Hive表,它在每日日期分区,其中我有3列:namesexcityage

现在,我想在此现有Hive表中添加另一个名为AgeRange的列,其中值将依赖于列Age的数据。

如果Age < 18,则值为0。如果Age >= 18 and <= 23,则值为1,否则值为2

如何为此编写查询?这需要对过去的数据进行,即截至昨天。

2 个答案:

答案 0 :(得分:1)

您可以先添加一个列,然后使用update语句CASE(希望您的Hive支持它)所有记录。

ALTER TABLE Data ADD COLUMNS (AgeRange Varchar);

UPDATE Data  SET AgeRange  = ( CASE WHEN Age < 18 THEN 0 
                                    WHEN Age >= 18 and <= 23 THEN 1
                                    ELSE 2 END );

答案 1 :(得分:0)

如果你的Hive不支持Update或者表格很大,那么用附加列创建新表并从旧表中插入覆盖:

insert overwrite table new_table
select 
      name,
      sex,
      city,
      age,
      case when Age < 18                then 0 
           when Age >= 18 and Age <= 23 then 1
           else                              2 
       end AgeRange
  from old_table;

然后删除旧表并重命名新表。