我有一个名为Data的Hive表,它在每日日期分区,其中我有3列:name
,sex
,city
,age
。
现在,我想在此现有Hive表中添加另一个名为AgeRange
的列,其中值将依赖于列Age
的数据。
如果Age < 18
,则值为0
。如果Age >= 18 and <= 23
,则值为1
,否则值为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;
然后删除旧表并重命名新表。