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

lsmd5eda  于 2022-11-28  发布在  Spark
关注(0)|答案(2)|浏览(159)

无法将以下T-SQL查询部分ISNULL(NAME,'N/A')转换为Spark-SQL等效项
SELECT ID,ISNULL(NAME,'N/A')AS名称,公司从测试到
将下面的T-SQL查询部分ISNULL(NAME,'N/A')转换为Spark-SQL等效项
SELECT ID,ISNULL(NAME,'N/A')作为测试中的名称,公司

8fsztsew

8fsztsew1#

你可以用两种方法来做,就像这样:

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|
+---+-----+

这两个选项的结果都相同。

juud5qan

juud5qan2#

函数isnull()仅返回一个布尔值,说明输入是空值还是空值。也可以尝试在case语句或(coalesce)中使用expression [https://docs.databricks.com/sql/language-manual/functions/coalese.html]

CASE WHEN NAME IS NULL THEN 'N/A' ELSE NAME END AS NAME

SELECT COALESCE(NAME,'N/A') AS NAME

希望能帮上忙...

相关问题