pyspark 比较空白字符串和空spark sql

nr9pn0ug  于 2022-11-01  发布在  Spark
关注(0)|答案(1)|浏览(217)

我正在编写一个联接两个表的SQL查询。我所面临的问题是,我所联接的列在一个表中是blank (""," "),而在另一个表中是null
表A
| 标识符|山坳|
| - -|- -|
| 一个||
| 2个||
| 三个|新加坡|
表B
| 标识符|山坳|
| - -|- -|
| 一种|零值|
| B|零值|
| C语言|新加坡|

source_alleg = spark.sql("""
    SELECT A.*,B.COL as COLB FROM TABLEA A LEFT JOIN TABLEB B 
    ON A.COL = B.COL
    """)

对于我的用例,空值和null是一样的。我想做一些类似Trim(a.col)的操作,它将空值转换为null,从而找到连接中的所有匹配。输出:
| 标识符|山坳|科尔布|
| - -|- -|- -|
| 一个|空值或空白|空值或空白|
| 2个|空值或空白|空值或空白|
| 三个|新加坡|新加坡|

2ic8powd

2ic8powd1#

在sql中,除非您使用outer joinfull join,否则在连接过程中会忽略NULL。更多信息:https://www.geeksforgeeks.org/difference-between-left-right-and-full-outer-join/
如果要将空值转换为字符串,可以使用if

select 
   if(isnull(trim(col1)),"yourstring", col1),
   if(isnull(trim(col2)),"yourstring", col2)
      from T;

相关问题