【问题标题】:Creating and sum the values of variables in HiveQL在 HiveQL 中创建变量的值并求和
【发布时间】:2016-08-08 16:55:10
【问题描述】:

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

【问题讨论】:

    标签: hive hiveql


    【解决方案1】:
    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
    

    【讨论】:

    • 什么是 x, y, z ??
    • 那是一个糟糕的编辑。现在,我已经编辑了关于我尝试过的几种解决方法的问题。但仍然没有成功。
    • 糟糕.. 我的查询错误。我修复了查询,现在我可以同时执行 sum() 和 2+3 内联。谢谢
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多