CBO优化原因导致struct 结构is not null过滤无效
select common.mid,
page.last_page_id,
page.page_id,
`if`(page.last_page_id is null, 1, 0) session_start_point
from ods_log_inc
where dt = '2020-06-14'
and page is not null
以上对page字段进行过滤null值
过滤无效依然显式
解决方法1:
对结构体内的某个字段进行过滤
select common.mid,
page.last_page_id,
page.page_id,
`if`(page.last_page_id is null, 1, 0) session_start_point
from ods_log_inc
where dt = '2020-06-14'
and page.page_id is not null
解决方法2:关闭cbo hive.cbo.enable 设置为 false set hive.cbo.enable=false;
解决方法3:此bug已经在hive4.x中修复 可以替换对应源码。或者升级hive