如何绕过ODPS不支持的笛卡尔积的限制Cartesian product is not allowed without map join

本文介绍如何通过在SQL查询中添加临时字段,巧妙地解决ODPS中不允许无on的join导致的笛卡尔积问题,以满足将战区信息与tmp2表结合的需求。

如何绕过ODPS不支持的笛卡尔积的限制

需求情景再现

with tmp1 as (
select '保定五洲长城大街店' as a,'华北战区' as c
union all
select '新疆五洲乌鲁木齐店' as a,'西北战区' as c
)
,
tmp2 as (
select '保定五洲' as b
union
select '廊坊五洲' as b
)

--现在需求想把战区给tmp2表拼上
select tmp2.b ,tmp1.c from tmp1 join tmp2 on tmp1.a like concat('%',tmp2.b,'%')

odps不支持无 on 的 join 会报

*ODPS-0130252 Cartesian product is not allowed without map join *的错误

 

可以往select里增加字段来绕过这个限制

with tmp1 as (
select '保定五洲长城大街店' as a,'华北战区' as c
union all
select '新疆五洲乌鲁木齐店' as a,'西北战区' as c
)
,
tmp2 as (
select '保定五洲' as b
union
select '廊坊五洲' as b
)
select tmp22.b ,tmp11.c from
 (select *,1 as raoguo from tmp1) tmp11 
join (select * ,1 as raoguo from tmp2) tmp22
 on tmp11.raoguo =tmp22.raoguo
 and  tmp11.a like concat('%',tmp22.b,'%')
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YiRan_Zhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值