mapjoin相关参数:https://blog.csdn.net/ccstargazing/article/details/106564262
直接举例子:当有多张维度表去关联一张事实表,并且主表的某一关联键使用了不止一次。
事实表:base,三个字段:key、city_code、biz_id
维度表:position,六个字段:city_id、biz_id、city_name、city_short、biz_name、biz_short。
用一个position去模拟t2、t3、t4、t5四张维度表。
常规写法:
select
t1.key as key
,t1.city_code as city_code
,t1.biz_id as biz_id
,t2.city_name
,t3.city_short
,t4.biz_name
,t5.biz_short
from(
SELECT
key
,city_code as city_code
,biz_id as biz_id
FROM base
)t1
join(
SELECT
city_id as city_code
,city_name
,city_short
FROM position
group by
city_id
,city_name
,city_short
)t2
on(t1.city_code = t2.city_code)
join(
SELECT
city_id as city_code
,city_name