添加一个列,该列是Hive中某些公式的结果

时间:2015-08-04 20:34:40

标签: sql hadoop hive hiveql

我有一张价值表。我想要另一个列,例如,第一列加一个(或其他任何公式)三次。

如果我写这样的话:

SELECT item, value, value*3+1 FROM myTable;

我得到这样的东西:

A    | 1     | 4
B    | 2     | 7
C    | 3     | 10

我想永久存储第三列。这样做:

ALTER TABLE myTable ADD COLUMN (value*3+1 AS value2 FLOAT);

不起作用。但是,这确实有效:

CREATE TABLE myTable2 AS SELECT 
    item, value, value*3+1 AS value2 
    FROM myTable;

但是,我不想要一个新表,我想在现有表中插入一列。我以为我可能需要ADD COLUMN然后INSERT OVERWRITE?如果您的方法可以使用avg()或sum()之类的UDF,则可以获得奖励积分,但我现在只采用基本算法。

我尝试搜索,this而非this都没有回答我的问题。

1 个答案:

答案 0 :(得分:1)

如果存储计算列,则在维护表时会遇到问题。这将需要在数据库中执行trigger操作,该操作将在插入新行后将值插入该列。另一种方法是使用计算列的view

w.r.t Hive,alter table..语法错误,因为此处无法指定计算。它应该是

ALTER TABLE myTable ADD COLUMNS (value2 FLOAT);