使用 lateral view explode(col1)后行数变少了,bug排查

问题复现

查询该表结果为100行

select count(1) as cnt

from (

select distinct a,b,c

from pageAds

)

查询下表条数为90行

select count(1) as cnt

from (

select distinct a,b,c

from pageAds

)

lateral view explode(split(a,',')) adTable as d

思考:第二条语句只比第一个多一个炸裂函数,炸裂函数的作用是将数据炸开变成多行数据,为什么还会条数变少了呢?

经过各种资料查找,数据探索,发现当字段是空时,不会形成新的一行,而是会把这条数据过滤掉

例如有20条a是空,那如果a都没有被分割,那就会生成80条数据,我这个a有被分割,所以生成了90条数据

注意:以后用这个的时候一定要探索好分割字段,当有空的时候提前把空值处理好,例如提前赋默认值

如下

select count(1) as cnt

from (

select distinct coalesce (case when a='' then ','

else a

end ,

',') as a

,b,c

from pageAds

)

lateral view explode(split(a,',')) adTable as d

相关推荐
鹿角片ljp1 分钟前
动态SQL实现模糊查询
数据库·sql·oracle
晓风残月淡2 分钟前
mysql备份恢复工具Percona XtraBackup使用教程
数据库·mysql
DomDanrtsey4 分钟前
oracle所有表中文与字段最大长度检测
数据库·oracle
Z...........9 分钟前
数据库表设计
数据库
tudficdew13 分钟前
使用Python操作文件和目录(os, pathlib, shutil)
jvm·数据库·python
浒畔居15 分钟前
工具、测试与部署
jvm·数据库·python
云和数据.ChenGuang16 分钟前
python对接mysql和模型类的故障
数据库·python·mysql·oracle·conda·virtualenv
2301_8223827618 分钟前
开发一个简单的Python计算器
jvm·数据库·python
2501_9209992721 分钟前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
龚礼鹏30 分钟前
图像显示框架十一——BufferQueue的工作流程(基于Android 15源码分析)
java·网络·数据库