如果你是SQL或数仓研发人员,你就会知道 coalesce 函数的重要性。Coalesce函数是SQL中广泛使用的函数之一。你可以使用coalesce函数来返回非空值。在这篇文章中,我们将通过一个例子来了解如何在Apache Spark DataFrame上使用Coalesce。
Coalesce是Spark SQL中的一个非聚合正则函数。Coalesce在给定的列中给出第一个非空值,如果所有列都是空值,则给出空值。你可以在DataFrame列的值上应用COALESCE函数,也可以编写自己的表达式来测试条件。
下面的例子演示了如何在DataFrame列上使用COALESCE函数并创建新的列。我们使用PySpark来演示Spark coalesce函数。
** DataFrame中使用Coalesce函数**
我们将使用下面的DataFrame来测试Spark SQL COALESCE函数。
testDF = sqlContext.createDataFrame([(1,1), (2,2), (None,3), (4,None)], ["id", "number"])
+----+------+
| id|number|
+----+------+
| 1| 1|
| 2| 2|
|null| 3|
| 4| null|
+----+------+
下面的例子是创建一个包含所有非空值的新列。
# create new column with non Null values
tmp = testDF.withColumn('newColumn', coalesce(testDF['id'], testDF['number']))
# Check the content of new df
tmp.show()
+----+------+---------+
| id|number|newColumn|
+----+------+---------+
| 1| 1| 1|
| 2| 2| 2|
|null| 3| 3|
| 4| null| 4|
+----+------+---------+
Spark SQL查询中使用COALESCE函数
如果你是在Hive或Spark SQL表或视图上工作,你可以在Spark SQL查询中使用coalesce函数。
例如,考虑下面的例子,它在查询中使用了coalesce。请注意,我们已经使用 registerTempTable 方法将 Spark DataFrame 注册为临时表。
sqlContext.sql("select *, coalesce(id, number) as newColumn from temp_table").show()
+----+------+---------+
| id|number|newColumn|
+----+------+---------+
| 1| 1| 1|
| 2| 2| 2|
|null| 3| 3|
| 4| null| 4|
+----+------+---------+
内容来源于网络,如有侵权,请联系作者删除!