SparkSql中的ISNULL和CASE WHEN方法

元数据
data.json
{“name”:“Yuhui”}
{“name”:“lihui”, “age”:30}
{“name”:“Justin”, “age”:19}

people.json
{“name”:“Yuhui”,“age”:29}
{“name”:“lihui”, “age”:33}
{“name”:“Leijiexu”, “age”:28}

加载且建立临时表
val jsondf01=sqlContext.read.json(“hdfs://hadoop14:9000/yuhui/json/data.json”)
val jsondf02=sqlContext.read.json(“hdfs://hadoop14:9000/yuhui/json/people.json”)
jsondf01.registerTempTable(“people01”)
jsondf02.registerTempTable(“people02”)
sqlContext.sql("select * from people01 ").show()
sqlContext.sql("select * from people02 ").show()
SparkSql中的ISNULL和CASE WHEN方法_第1张图片

isnull方法
ISNULL(A.age) 当A.age为null时,则ISNULL(A.age)为true
ISNULL(A.age) 当A.age不为null时,则ISNULL(A.age)为false
SparkSql中的ISNULL和CASE WHEN方法_第2张图片

Case When 方法

第一个查询结果:如果B表的age有值则取B表中的age。如果没有值则去A表中的age
第二个查询结果:如果A表的age有值则取A表中的age。如果没有值则去B表中的age

sqlContext.sql("select A.age AS Aage ,A.name AS Aname,B.age AS Bage ,B.name AS Bname  from (select * from people01 ) A  left join  (select * from people02)  B  on A.name= B.name").show()

这里写图片描述

sqlContext.sql("select (CASE WHEN ISNULL(B.age)=false THEN B.age ELSE  A.age END  ) AS age , A.name AS name  from (select * from people01 ) A  left join  (select * from people02)  B  on A.name= B.name").show()

sqlContext.sql("select (CASE WHEN ISNULL(B.age)=false THEN B.age ELSE  A.age END  ) AS age , A.name AS name  from (select * from people01 ) A  left join  (select * from people02)  B  on A.name= B.name").show()

SparkSql中的ISNULL和CASE WHEN方法_第3张图片

北京小辉微信公众号

SparkSql中的ISNULL和CASE WHEN方法_第4张图片

大数据资料分享请关注

你可能感兴趣的:(SparkSql中的ISNULL和CASE WHEN方法)