我想通过一些语句确定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。谢谢你的帮助!
答案 0 :(得分:2)
condition
确实应该返回一个布尔值,但您可以使用relational和logical运算符构建任意复杂度的要求。
例如,如果您希望所有高于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
希望,它会帮助你。