2016-08-08 1 views
1

나의 사용 사례 중 하나에서 전통적인 SQL 기반웨어 하우징 응용 프로그램을 하이브로 마이그레이션하려고합니다. 나는 HiveQL이 아닌 SQL의 전문가도 아닙니다. 그러나 테이블을 만들고 csv를 하이브 테이블로 가져 오는 데 성공했습니다. 그러나 하이브 QL에서 SQL 기반 분석 쿼리를 복제하는 동안 도로 블록을 공격했습니다. 웹 로그 분석 알고리즘 중 하나에서, 우리는 내가이 HiveQL에서 수행 얻기 위해 고군분투 HiveQL에서 변수 값 생성 및 합계

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

var count = x + y + z 

아래처럼, 그 변수의 합을 여러 변수를 작성하고 계산해야합니다.

실제로 이러한 변수는 모두 하나의 열을 형성하고 하나 이상의 열은 var1, var2 및 var3의 합계를 전달하는 합계입니다. 특정 행의 열, 즉 var1, var2 및 var3에 값을 추가하고 그 열의 총 열에 값을 저장하는 데 사용할 수있는 합계와 같은 집계 함수가 있습니까?

다음과 같이 할 수 있습니까? 테이블 TEMP 자체를 생성하는 동안 하이브에게 말할 수 있습니까? 위에서 할 수없는 경우

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

, 나는 내가 하이브 편집기에서 모든 쿼리와 문을 작성하는 색조 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; 

시도 결국 쿼리.

a) 임시 열에 쓰는 것, 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