在HiveQL

时间:2016-08-08 06:45:16

标签: hive hiveql

在我的一个用例中,我正在尝试将传统的基于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。

1 个答案:

答案 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