动态确定Hive中列的值

时间:2013-08-27 06:50:37

标签: hive

我想通过一些语句确定Hive表中列的值。

例如,列是age

if(some condition are satisfied) the value is 30, otherwise, the value is 10

所以在插入所有行之后,满足该语句的行的年龄为30而其他行为10.

我正在使用查询:

insert overwrite table test_table select A.age from (select IF(condition, 30, 10) as age from some_other_table ) A;

但if语句似乎只适用于true和false。谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

condition确实应该返回一个布尔值,但您可以使用relationallogical运算符构建任意复杂度的要求。

例如,如果您希望所有高于160厘米的男性被指定为30岁,而所有其他年龄均为10岁,您可以执行以下操作。

select if(sex = "M" AND height >= 160, 30, 10) as age 
from some_other_table

希望有所帮助。

答案 1 :(得分:1)

您正在使用select A from (output of another select)这看起来有些含糊不清。 更好,你可以尝试这样:

insert overwrite table test_table 
        (select IF(condition, 30, 10) as age from some_other_table )

条件应该是这样的:

select IF(height >=170 and gender="male", 30, 10) as age from some_other_table

希望,它会帮助你。