2013-08-27 1 views
0

Я хотел бы определить значение столбца таблицы 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;

Но если statemen t, похоже, работает только для истинных и ложных. Спасибо за любую помощь!

ответ

2

condition должно действительно возвращать логическое значение, но вы можете создавать требования произвольной сложности с помощью операторов relational и logical.

Если, например, вы хотите, чтобы все мужчины старше 160 см назначались 30 лет и все остальные 10 лет, вы могли бы сделать следующее.

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

Надеюсь, что это поможет.

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 

Надежда, это поможет вам.

Смежные вопросы