2016-05-23 92 views
0

我有很大的表和2列A和B蜂巢。
在A或B或兩者都具有相同值的情況下,行是相同的。
我想建立一個新的列,並指定在此基礎上比較值:如何基於Hive中的其他列比較派生新列?

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

您可以通過在你的SELECT語句中使用conditional functions in Hive實現這一目標:

SELECT A, B, IF(A == 'a' OR B == 'b', 'id1', 'id2') AS New_Col FROM huge_table; 

下面是如何從huge_table新,派生列New_Col創建new_huge_table

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;