Hive 动态确定配置单元中列的值

Hive 动态确定配置单元中列的值,hive,Hive,我想通过一些语句来确定配置单元表中列的值 e、 例如,该列为年龄: 如果满足某些条件,则值为30,否则,值为10 因此,在插入所有行之后,满足语句的行的年龄是30岁,而其他行是10岁 我使用的查询如下: 插入覆盖表测试表 选择 A.年龄 从…起 选择 如果条件,30岁,10岁 从另一张桌子上 A 但if语句似乎只适用于真与假。谢谢你的帮助 条件确实应该返回布尔值,但您可以使用and运算符构造任意复杂度的需求 例如,如果您希望所有身高超过160厘米的男性都被指定为30岁,而其他所有男性都被指定为1

我想通过一些语句来确定配置单元表中列的值

e、 例如,该列为年龄:

如果满足某些条件,则值为30,否则,值为10

因此,在插入所有行之后,满足语句的行的年龄是30岁,而其他行是10岁

我使用的查询如下:

插入覆盖表测试表 选择 A.年龄 从…起 选择 如果条件,30岁,10岁 从另一张桌子上 A

但if语句似乎只适用于真与假。谢谢你的帮助

条件确实应该返回布尔值,但您可以使用and运算符构造任意复杂度的需求

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

select if(sex = "M" AND height >= 160, 30, 10) as age 
from some_other_table
希望有帮助。

条件确实应该返回布尔值,但您可以使用and运算符构造任意复杂度的需求

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

select if(sex = "M" AND height >= 160, 30, 10) as age 
from some_other_table
希望对您有所帮助。

您使用的是从另一个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
条件应如下所示:

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
希望对您有所帮助。

您使用的是从另一个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
条件应如下所示:

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
希望对你有帮助