如何将以下 T-SQL 查询 ISNULL(NAME,'N/A') 转换为 Spark-SQL 等效项



无法将下面的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

希望对你有帮助。

最新更新