Mysql concat_ws在所有值都为null时运行空值,在所有值都为null时我需要null
我正在用pyspark编写一个脚本,我们在这里进行数据转换。 我正在使用Mysql concat_ws在所有值都为null时运行空值,在所有值都为null时我需要null,mysql,apache-spark,pyspark,Mysql,Apache Spark,Pyspark,我正在用pyspark编写一个脚本,我们在这里进行数据转换。 我正在使用contact_ws函数来联系值,同时执行groupby。我在这里面临的问题是,如果concat_ws中的所有值都null,那么它将返回空白值。所以,当我试图在mysql表中插入新的转换数据时,它会给我类似“”的错误 无法在数据库中插入 若要解决此问题,我们需要在concat_ws函数中的所有值均为null时使用null值,假设您有以下数据帧 df.show() +----+----+----+ |val1|val2|va
contact_ws
函数来联系值,同时执行groupby
。我在这里面临的问题是,如果concat_ws
中的所有值都null
,那么它将返回空白值。所以,当我试图在mysql表中插入新的转换数据时,它会给我类似“”的错误
无法在数据库中插入
若要解决此问题,我们需要在
concat_ws
函数中的所有值均为null
时使用null
值,假设您有以下数据帧
df.show()
+----+----+----+
|val1|val2|val3|
+----+----+----+
| a| b| c|
| d| e|null|
| g|null|null|
|null|null|null|
+----+----+----+
您希望将val1
、val2
和val3
连接到一个新列concat
正如您所说,concat_ws
的默认行为是,如果所有输入都是null
,则返回一个空字符串:
df.withColumn(“concat”,concat_-ws(“_”),val1,val2,val3)).show()
您有许多选项可以获取null
值,而不是空字符串:
选项1:调用concat_ws
,然后将所有空值替换为null
import org.apache.spark.sql.types_
var withConcat=df.withColumn(“concat”,concat_ws(“_”),val1,val2,val3)).show()
withConcat.withColumn(“concat”,当('concat.equalTo(“”),亮起(null.cast(StringType))。否则('concat)).show()
选项2:如果所有值均为null
df.withColumn(“concat”,当(coalesce('val1,'val2,'val3)).isNull,lit(null).cast(StringType))。否则(concat_-ws('u1,'val1,'val2,'val3))。show()
注意:代码是scala的,但是可以很容易地适应pyspark
假设您有以下数据帧
df.show()
+----+----+----+
|val1|val2|val3|
+----+----+----+
| a| b| c|
| d| e|null|
| g|null|null|
|null|null|null|
+----+----+----+
您希望将val1
、val2
和val3
连接到一个新列concat
正如您所说,concat_ws
的默认行为是,如果所有输入都是null
,则返回一个空字符串:
df.withColumn(“concat”,concat_-ws(“_”),val1,val2,val3)).show()
您有许多选项可以获取null
值,而不是空字符串:
选项1:调用concat_ws
,然后将所有空值替换为null
import org.apache.spark.sql.types_
var withConcat=df.withColumn(“concat”,concat_ws(“_”),val1,val2,val3)).show()
withConcat.withColumn(“concat”,当('concat.equalTo(“”),亮起(null.cast(StringType))。否则('concat)).show()
选项2:如果所有值均为null
df.withColumn(“concat”,当(coalesce('val1,'val2,'val3)).isNull,lit(null).cast(StringType))。否则(concat_-ws('u1,'val1,'val2,'val3))。show()
注意:代码是scala的,但是可以很容易地适应pyspark
+----+----+----+------+
|val1|val2|val3|concat|
+----+----+----+------+
| a| b| c| a_b_c|
| d| e|null| d_e|
| g|null|null| g|
|null|null|null| null|
+----+----+----+------+
+----+----+----+------+
|val1|val2|val3|concat|
+----+----+----+------+
| a| b| c| a_b_c|
| d| e|null| d_e|
| g|null|null| g|
|null|null|null| null|
+----+----+----+------+