2016-08-10 2 views
0

I 임팔라 연결/쿼리를 할 수있는 다음과 같은 작업 파이썬 코드가 있습니다SQL보다 읽기 쉬운 형식으로 중첩 된 쿼리 속보/임팔라


import pandas as pd 


query = 'select my_c_instance_id, count(my_c_instance_id) as my_ins_id_count from ' + \ 
     '(select * from my_table where my_c_id like "%small%") as small_table' + \ 
     ' group by(my_c_instance_id)' 
cursor = impala_con.cursor() 
cursor.execute('USE my_db') 
cursor.execute(query) 
df_result = as_pandas(cursor) 
df_result 

코드는 잘 작동하지만, 내가

small_table = 'select * from my_table where my_c_id like "%small%"' 

query = 'select my_c_instance_id, count(my_c_instance_id) as my_ins_id_count from small_table group by(my_c_instance_id)' 

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

가능한 경우 어떻게 위 아이디어를 실제로 만들 수 있습니까? 작동합니까? 감사.

답변

1

내가 뭔가를 오해하고있어하지 않는 한, 서브 쿼리에 대한 필요는 메인 쿼리에 where 기준을 이동, 전혀 없다 :

select my_c_instance_id, count(my_c_instance_id) as my_ins_id_count 
from my_table 
where my_c_id like '%small%' 
group by my_c_instance_id 
+0

네, 감사합니다! 그러나 예를 들어 단지 두 개의 분리 된 쿼리가 가능합니까? 감사! – Edamame

+0

@Edamame - 기술적으로 '공통 테이블 식'을 사용하여 별도의 쿼리를 작성할 수는 있습니다.하지만 왜 도움이 될지 모르겠습니다. 위의 예에서 두 개의 "쿼리"는 문자열 일 뿐이므로 분리 된 문자열을 유지하고 실행하기 전에 문자열을 하나로 연결합니다. – sgeddes

+0

감사합니다! table_1을 만들 첫 번째 쿼리를 만들 수 있습니까? 그런 다음 table_2에 두 번째 쿼리를 만드시겠습니까? 공통 테이블 식입니까? 정확히 어떻게 작동합니까? 감사! – Edamame