0

我想通过一些语句来确定 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 语句似乎只适用于真假。谢谢你的帮助!

4

2 回答 2

2

应该确实返回一个布尔值,但您可以使用关系逻辑condition运算符构造任意复杂度的需求。

例如,如果您希望将所有身高超过 160 厘米的男性指定为 30 岁,而将其他所有男性指定为 10 岁,您可以执行以下操作。

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

希望有帮助。

于 2013-08-27T07:35:12.373 回答
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

希望,它可以帮助你。

于 2013-08-27T08:26:06.640 回答