2017-01-28 12 views
0

2つのパーティションテーブルがcustomeritemsであり、両方がcountrystateカラムでパーティション化されているとします。ハイブのパーティションテーブルへの結合

これは、特定の国と州のデータを取得する必要がある場合、これらのテーブルの内容を結合する正しい方法ですか?

select 
    customer.id, 
    customer.name, 
    items.name, 
    items.value 
from 
    customers 
    join items 
    on customers.id == items.customer_id 
    and customers.country == 'USA' 
    and customers.state == 'TX' 
    and items.country == 'USA' 
    and items.state == 'TX' 

これらの条件はWHERE句に入れる必要がありますか?単純なクエリの場合

and customers.country == 'USA' 
and customers.state == 'TX' 
and items.country == 'USA' 
and items.state == 'TX' 
+1

これらの条件はWHERE句に入れる必要があります。 – highlycaffeinated

答えて

1

この場合には、性能が「上」または「場所」句に条件を置くの間で同じになりますので、ハイブは、削減フェーズの前に、述語をプッシュします。しかし、テーブル間でフィールドを比較している他のクエリ(table1.a <テーブル2.b)を書くと、Hiveはほとんどのリレーショナルデータベースのように、結合を実行し、最後にwhere条件を適用します(リデューサフェーズ)。

関連する問題