当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函数的官方指南,使用函数时一定要注意使用的参数类型、函数功能、对空值的处理方式、返回值类型
比如说这个比较符
当Hive函数、连接语句遇到NULL、如何看hive对你写的sql的实际执行逻辑

三、不同数据类型的操作数如何进行比较?

有些时候,比较符两边的数据类型不一致时,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到底怎么执行的怎么看?

上面的问题还未找到答案,希望有大佬看到文章可以指导指导