添加一列,这是 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);
我有 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);