我有一个巨大的桌子和2个A和B列在蜂巢中 在A或B或两者具有相同值的情况下,行是相同的 我想建立一个新列并根据这个比较分配一个值:
A B
-- --
a b
a c
d b
p q
结果:
A B New_Col
-- -- -----
a b id1
a c id1
d b id1
p q id2
任何有效的解决方案?
答案 0 :(得分:0)
您可以在SELECT语句中使用conditional functions in Hive来实现此目的:
SELECT A, B, IF(A == 'a' OR B == 'b', 'id1', 'id2') AS New_Col FROM huge_table;
以下是如何使用新的派生列new_huge_table
从huge_table
创建New_Col
:
CREATE TABLE my_database.new_huge_table (A STRING, B STRING, New_Col STRING);
INSERT OVERWRITE TABLE my_database.new_huge_table
SELECT A, B, IF(A == 'a' OR B == 'b', 'id1', 'id2') AS New_Col FROM huge_table;