복붙노트

[HADOOP] 테이블을 조인하는 중 하이브 쿼리의 오류

HADOOP

테이블을 조인하는 중 하이브 쿼리의 오류

아래 HIVE 쿼리를 사용하여 동등성 검사를 통과 할 수 없습니다.

나는 3 개의 테이블을 가지고 있고 나는이 테이블에 가입하고 싶다. 나는 아래처럼 노력하고 있지만 오류가 발생한다 :

FAILED : 시맨틱 분석 오류 : Line 3:40 JOIN 'visit_date'에서 왼쪽 및 오른쪽 별칭이 모두 발생했습니다.

select t1.*, t99.* from table1 t1 JOIN 
    (select v3.*, t3.* from table2 v3 JOIN table3 t3 ON
    ( v3.AS_upc= t3.upc_no AND v3.start_dt <= t3.visit_date  AND v3.end_dt >= t3.visit_date AND v3.adv_price <= t3.comp_price ) ) t99 ON
    (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);

FuzzyTree의 도움을 받아 편집 됨 :

첫 번째

between과 where 절을 사용하여 위의 쿼리를 편집하려고했지만 쿼리의 결과가 표시되지 않았습니다.

그러나 위의 쿼리에서 dates를 제거하여 쿼리를 변경 한 경우 "v3.adv_price <= t3.comp_price"를 기반으로 한 출력이 있지만 "날짜 필터"는 사용하지 않습니다.

select t1.*, t99.* from table1 t1 JOIN
    (select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no) 
        where v3.adv_price <= t3.comp_price
    ) t99 ON
    (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);

2 위 :

다음으로 우리는 하나의 날짜 만 전달하려고했습니다.

select t1.*, t99.* from table1 t1 JOIN
        (select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no) 
            where v3.adv_price <= t3.comp_price and v3.start_dt <= t3.visit_date
        ) t99 ON
        (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);

이제는 결과가 약간 보이지만 시작일과 종료일 필터를 모두 통과하면됩니다. 어떤 결과도 보이지 않습니다.

해결법

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

    1.https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins

    불평등을 where 절로 옮기십시오.

    select t1.*, t99.* from table1 t1 JOIN
        (select v3.*, t3.* from table2 v3 JOIN table3 t3 on (v3.AS_upc= t3.upc_no) 
            where t3.visit_date between v3.start_dt and v3.end_dt
            and v3.adv_price <= t3.comp_price
        ) t99 ON
        (t1.comp_store_id = t99.cpnumber AND t1.AS_store_nbr = t99.store_no);
    
  2. from https://stackoverflow.com/questions/25821166/error-in-hive-query-while-joining-tables by cc-by-sa and MIT license