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

Adding a column which is the result of some formula in Hive

我有 table 个值。我想要另一列,例如,第一列的三倍加上一个(或任何其他公式)。

如果我这样写:

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;

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

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

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

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

ALTER TABLE myTable ADD COLUMNS (value2 FLOAT);