2016-08-10 8 views
0

Iインパラ接続/クエリを実行するには、次の作業Pythonコードを持っている: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

はい、ありがとう!しかし、単に目的のために、2つの分離されたクエリが可能ですか?ありがとう! – Edamame

+0

@Edamame - あなたは技術的に '共通テーブル式 'を使って別のクエリを書くことができましたが、なぜそれが役に立つのか分かりません。あなたの上の例では、これらの2つの "クエリ"は単なる文字列なので、それらを分離しておき、それらを実行する前に文字列を連結することができます。 – sgeddes

+0

ありがとう!最初のクエリを作成してtable_1を作成し、次にtable_2の2番目のクエリを作成することは可能ですか?共通のテーブル式ですか?どのように正確に動作するのですか?ありがとう! – Edamame

関連する問題