假设我有两个分区表 customer
以及 items
两者都被 country
以及 state
柱。
如果我想检索特定国家和州的数据,那么这是连接这些表的内容的正确方法吗?
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'
2条答案
按热度按时间6ie5vjzr1#
我们可以连接分区表,分区只是文件夹结构,分区是指根据特定列的值(例如:date、state等)将表划分为相关部分的方式。对于ex,我有如下分区
现在我们可以用下面的方法连接表
或者
14ifxucb2#
对于简单查询,hive将在reduce阶段之前推送 predicate ,因此在这种情况下,将条件放在“on”或“where”子句上的性能是相同的。但是,如果您编写其他查询来比较表之间的字段(表1.a<表2.b),那么hive将执行连接并在结束时应用where条件(reducer阶段),就像大多数关系数据库一样。