当Hive函数、连接语句遇到NULL、如何看hive对你写的sql的实际执行逻辑
一、 avg(col), avg(DISTINCT col)
这个函数的实现逻辑是,对此表中的所有行求和/行数,会忽略NULL值的行
场次 | 时长 |
---|---|
1 | 60 |
2 | 80 |
3 | null |
4 | 70 |
5 | 60 |
用avg(时长)这个函数,得到的是(60+80+70+60)/4
二、一定要注意NULL!
hive中的函数对NULL的处理方式,以及在full join关联时(一定要先处理好空值再关联),NULL都是会让你的数据出现意想不到的结果的“点睛之笔”
附上https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
hive函数的官方指南,使用函数时一定要注意使用的参数类型、函数功能、对空值的处理方式、返回值类型
比如说这个比较符
三、不同数据类型的操作数如何进行比较?
有些时候,比较符两边的数据类型不一致时,sql也不会报错,比如string同bigint类型比较时。这个时候底层会将这两个值如何进行比较呢?
四、当where、连接子句遇到null?
包含null条件的语句 | 结果 |
---|---|
where null | 这一行不会进入到结果表中 |
A left join B on null | ? |
A left join B on null | ? |
A full join B on null | ? |
五、我写的sql,hive到底怎么执行的怎么看?
上面的问题还未找到答案,希望有大佬看到文章可以指导指导