无法将下面的T-SQL查询部分ISNULL(NAME,'N/A')转换为Spark-SQL等效
选择ID,Isnull (name,' n/a ')作为name,公司FROM TEST to
将下面的T-SQL查询部分ISNULL(NAME,'N/A')转换为Spark-SQL等效
选择ID,Isnull (name,' n/a ')作为name,公司从测试
有两种方法,如下所示:
df = spark.createDataFrame([(1, None), (2, None)], "id: int, value: string")
df.show()
+---+-----+
| id|value|
+---+-----+
| 1| null|
| 2| null|
+---+-----+
df.na.fill("N/A", subset=["value"]).show()
+---+-----+
| id|value|
+---+-----+
| 1| N/A|
| 2| N/A|
+---+-----+
from pyspark.sql.functions import col, when
df.withColumn("value", when(col("value").isNull(), "N/A")).show()
+---+-----+
| id|value|
+---+-----+
| 1| N/A|
| 2| N/A|
+---+-----+
两个选项的结果都是一样的。
函数isnull()仅返回一个布尔值,说明输入是空还是空。或者尝试在case语句或(coalesce)中使用表达式[https://docs.databricks.com/sql/language-manual/functions/coalesce.html]
CASE WHEN NAME IS NULL THEN 'N/A' ELSE NAME END AS NAME
或
SELECT COALESCE(NAME,'N/A') AS NAME
希望对你有帮助。