如何根据Hive中的其他列比较派生新列?

时间:2016-05-23 11:48:15

标签: sql hive

我有一个巨大的桌子和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

任何有效的解决方案?

1 个答案:

答案 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_tablehuge_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;