2016-08-12 1 views
0
내가 된 table_1의 마지막 달의 데이터를 찾으려면 다음 코드를 사용하려고

는 다음 table_2로 가입 왼쪽 가입 :임팔라/SQL : 서브 테이블을 선택하고

import pandas as pd 

query = 'select * from table_1 where table_1.ts > "2016-07-12 00:00:00" as recent_table left join table_2 on table_1.t2__fk=table_2.id' 

cursor = impala_con.cursor() 
cursor.execute('USE my_db') 
cursor.execute(query) 
df_result = as_pandas(cursor) 
df_result 

하지만 다음 오류가 발생했습니다 :

HiveServer2Error: AnalysisException: Syntax error in line 1: 
...s > "2016-07-10 00:00:00" as recent_table left join table_2... 
          ^
Encountered: AS 
Expected: AND, BETWEEN, DIV, GROUP, HAVING, ILIKE, IN, IREGEXP, IS, LIKE, LIMIT, NOT, OFFSET, OR, ORDER, REGEXP, RLIKE, UNION 

CAUSED BY: Exception: Syntax error 

내가 여기에서 놓친 것을 아는 사람이 있습니까? 이 목표를 달성하기위한 올바른 방법은 무엇입니까? 감사!

답변

1

쿼리 구문이 잘못되었습니다. 아래에서 지적한대로 조건문에 별칭을 사용할 수 없습니다. 별칭은 테이블 이름과 열 이름에만 사용됩니다.

where table_1.ts > "2016-07-12 00:00:00" as recent_table 

올바른 쿼리는

select t1.* 
from table_1 t1 
left join table_2 t2 on t1.t2__fk = t2.id 
where t1.ts > "2016-07-12 00:00:00"; 
+0

감사 할 것이다. 그런 다음 다른 테이블과 조인하기 전에 하위 테이블을 찾는 목표를 달성하는 방법은 무엇입니까? – Edamame

+0

@Eameame, 편집 된 답변을 확인 했습니까? 올바른 쿼리도 포함되었습니다. – Rahul

+0

여기에 올바른 검색어의 t1은 무엇입니까? 또는 table_1이어야합니까? 감사! – Edamame