蜂巢离开外部连接与条件之间

时间:2014-11-07 01:00:58

标签: mysql sql hadoop hive hql

我知道我们不能在蜂巢中进行不平等的连接。我需要将以下查询转换为hive(hql)。任何建议/解决方法都将不胜感激。

table_A和table_B都没有主键。

SELECT * 
FROM table_A f
LEFT OUTER JOIN table_B dom1
 ON dom1.country = f.issuing_office_country
AND dom1.ulr_source = 'Loss'
AND dom1.valuation_class = f.dsp_level_join
AND dom1.year_type = 'UW'
AND f.undwrtr_yr_prd_fy_mnth BETWEEN dom1.start_year_month AND dom1.end_year_month

LEFT OUTER JOIN table_B dom2
 ON dom2.country = f.issuing_office_country
AND dom2.ulr_source = 'Short'
AND dom2.valuation_class = f.div_level_join 
AND dom2.year_type = 'UW'
AND f.undwrtr_yr_prd_fy_mnth BETWEEN dom2.start_year_month AND dom2.end_year_month

1 个答案:

答案 0 :(得分:1)

我认为您可以使用where子句来解决此问题(近似)。它应该是:

where (f.undwrtr_yr_prd_fy_mnth BETWEEN dom1.start_year_month AND dom1.end_year_month or
       dom1.valuation_class is null
      ) and
      (f.undwrtr_yr_prd_fy_mnth BETWEEN dom2.start_year_month AND dom2.end_year_month or
       dom2.valuation_class is null
      )

where子句与on子句中使用条件之间存在一些细微差别,但它们可能不会影响您的查询。