2016-08-08 10 views
1

私の使用例の1つでは、従来のSQLベースのウェアハウスアプリケーションをHiveに移行しようとしています。私はHiveQLではなくSQLの専門家でもありません。しかし、私はテーブルを作成し、csvをハイブテーブルにインポートすることに成功しました。しかし、その後、ハイブQLでSQLベースの分析クエリを複製しながらロードブロックを襲った。分析アルゴリズムの一つでは、我々は複数の変数を作成して、私はこれはHiveQLで成し遂げるのに苦労していますHiveQLで変数の値を作成し合計する

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

var count = x + y + z 

以下のように、これらの変数の合計を計算する必要があります。

実際、これらの変数はすべて列を形成し、もう1つの列はvar1、var2、およびvar3の合計を持つ合計です。特定の行、つまりvar1、var2、およびvar3の列に値を追加し、その行の合計列に格納できるsumのような集計関数はありますか?

以下のようにすることはできますか?テーブルTEMP自体の作成中にHiveに伝えることはできませんか?

INSERT INTO TABLE TEMP VALUES (1, 2, 1+2); 

上記は私がApacheの色相を使用し、フエproviedesハイブエディタ内のすべてのクエリと文を書き、火を好むいます以下の回避策

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; 

を試してみましたが、不可能な場合最後にクエリ。

一時的な列に書き込むこと、b)INSERTに値を直接追加すること以外に、他のクリーンな方法がありますか?私は変数x、y、zを持ち、count = x + y + zを合計できることを好みます。

答えて

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 
+0

x、y、zとは何ですか? –

+0

それは悪い編集だった。今、私は試みたいくつかの回避策について私の質問を編集しました。しかし、まだ成功はありません。 – Bala

+0

おっと...私の質問が間違っていました。私はクエリを修正し、今私はsum()と2 + 3 inlineの両方を行うことができました。ありがとう – Bala

関連する問題