我有一张价值表。我想要另一个列,例如,第一列加一个(或其他任何公式)三次。
如果我写这样的话:
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,则可以获得奖励积分,但我现在只采用基本算法。
答案 0 :(得分:1)
如果存储计算列,则在维护表时会遇到问题。这将需要在数据库中执行trigger
操作,该操作将在插入新行后将值插入该列。另一种方法是使用计算列的view
。
w.r.t Hive,alter table..
语法错误,因为此处无法指定计算。它应该是
ALTER TABLE myTable ADD COLUMNS (value2 FLOAT);