在我的一个用例中,我正在尝试将传统的基于SQL的仓库应用程序迁移到Hive中。我不是SQL专家而不是HiveQL。但是,我在创建表和将csv导入hive表方面取得了不错的成功。但后来我在Hive QL中复制基于SQL的分析查询时遇到了障碍。在其中一个分析算法中,我们需要创建多个变量并计算这些变量的总和,如下所示
var x = query1
var y = query2
var z = query3
var count = x + y + z
我正在努力在HiveQL中完成这项工作。
实际上,所有这些变量都形成一列,另外一列是总数,它包含var1,var2和var3之和。有没有像sum这样的聚合函数可以用来在特定行的列中添加值,即var1,var2和var3,并将它们存储在该行的总列中?
是否可以执行以下操作。在创建表TEMP本身时是否无法告诉Hive?
INSERT INTO TABLE TEMP VALUES (1, 2, 1+2);
如果无法解决上述问题,我尝试了以下解决方法
DROP TABLE T_TEMP;
DROP TABLE VARI;
CREATE TABLE VARI(value INT);
INSERT INTO TABLE VARI VALUES(1);
INSERT INTO TABLE VARI VALUES(2);
CREATE TABLE T_TEMP(var1 INT, var2 INT, total INT);
INSERT INTO TABLE T_TEMP
SELECT
1,
2,
sum(t.value)
from VARI as t;
我正在使用Apache Hue,并且更喜欢在Hue提供的Hive编辑器中编写所有查询和语句,并最终触发查询。
是否有其他可用的干净方法,除了a)写入临时列,b)直接在INSERT中添加值。我更喜欢变量x,y,z并且能够将它们相加count = x + y + z。
答案 0 :(得分:0)
select sum(y.x) from (
select count(*) as x from table1
union all
select count(*) as x from table2
union all
select count(*) as x from table3) y