복붙노트

[HADOOP] SQL Hive 하위 쿼리 오류

HADOOP

SQL Hive 하위 쿼리 오류

아래 쿼리가 있습니다

set hive.cli.print.header=true;
set hive.query.max.partition=1000;
set hive.mapred.mode=unstrict;

SELECT

dim_lookup("accounts",name,"account_id") = '28016' as company,
dim_lookup("campaigns",name,"campaign_id") in (117649,112311,112319,112313,107799,110743,112559,112557,105191,105231,107377,108675,106587,107325,110671,107329,107181,106565,105123,106569,106579,110835,105127,105243,107185,105211,105215) as campaign_name,
case when is_click_through=0 then "PV" else "PC" end as conv_type,
(SELECT COUNT(1) FROM impressions WHERE ad_info[2] in (117649,112311,112319,112313,107799,110743,112559,112557,105191,105231,107377,108675,106587,107325,110671,107329,107181,106565,105123,106569,106579,110835,105127,105243,107185,105211,105215)) AS impressions

FROM actions

WHERE
data_date>='20170101'
AND data_date<='20171231'
AND conversion_action_id in (20769223,20769214,20769219,20764929,20764932,20764935,20769215,20769216,20764919,20769218,20769217,20769220,20769222)
GROUP BY conv_type

실행할 때 오류가 발생합니다.

 ERROR ql.Driver: FAILED: ParseException line 8:1 cannot recognize input near 'SELECT' 'COUNT' '(' in expression specification

지정된 conversion_action_id에 대한 각 노출 수를 가져 오려고합니다. 내 쿼리에서 오류가 무엇입니까? 도와 주셔서 감사합니다.

참고 : ad_info [2]와 campaign_id는 동일합니다.

해결법

  1. ==============================

    1.문제는 분명합니다. SELECT 내부에 하위 쿼리가 있습니다.

    문제는 분명합니다. SELECT 내부에 하위 쿼리가 있습니다.

    이것이 작동하는 방식이 아닙니다.

    불행히도 정확한 솔루션은 명확하지 않습니다. 원하는 것을 완전히 확신하지 못하지만 일반적인 조언은 다음과 같습니다.

    부속 조회 출력을 from 명령문에서 사용할 수 있고 from 명령문의 다른 테이블과 결합해야하는 (JOIN, UNION?) 다른 테이블로 생각하십시오.

  2. from https://stackoverflow.com/questions/48869837/sql-hive-subquery-error by cc-by-sa and MIT license