在hiveql中创建变量值并求和

aelbi1ox  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(261)

在我的一个用例中,我尝试将传统的基于sql的仓库应用程序迁移到hive中。我也不是sql方面的Maven,也不是hiveql方面的Maven。不过,我在创建表和将csv导入配置单元表方面取得了相当大的成功。但是在hiveql中复制基于sql的分析查询时遇到了一个障碍。在其中一个分析算法中,我们需要创建多个变量并计算这些变量的总和,如下所示

var x = query1
var y = query2
var z = query3

var count = x + y + z

我正在努力在hiveql中完成这个任务。
事实上,所有这些变量组成一列,另外一列是total,它包含var1、var2和var3之和。有没有像sum这样的聚合函数,我可以用来在特定行的列var1、var2和var3中添加值,并将它们存储在该行的列total中?
有没有可能像下面这样做。在创建表temp本身的过程中,不可能告诉配置单元吗?

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;

我使用的是apachehue,我更喜欢在hue提供的hiveeditor中编写所有查询和语句,并在最后启动查询。
除了a)写入temp列,b)直接在insert中添加值之外,还有其他干净的方法可用吗。我更喜欢变量x,y,z,并且能够求和count=x+y+z。

qf9go6mv

qf9go6mv1#

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

相关问题