十进制值的密集秩

bvn4nwqk  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(393)

如何计算十进制值的danseèu秩。
我有如下输入值:pid | biosver | 1 | 1.01 1 | 1.04 1 | 1.11 1 | 01.32 1 | 1.09 1 | 1.03 1 | 1.29
预期输出:pid | biosver |排名1 | 01.32 | 1 1 | 1.29 | 2 1 | 1.11 | 3 1 | 1.09 | 4像这样。。。。。

pu82cl6c

pu82cl6c1#

使用
window dense_rank() 此案例的函数。
例子:

import org.apache.spark.sql.types._
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions._

//sample dataframe
val df=Seq((1,1.01),(1,01.32),(1,1.29),(1,1.03)).toDF("pid","biosver")

val w= Window.orderBy(desc("biosver"))

//if your datatype is string then use casting
val w= Window.orderBy(col("biosver").cast("decimal(10,2)").desc)

df.withColumn("Rank",dense_rank().over(w)).show()

//+---+-------+----+
//|pid|biosver|Rank|
//+---+-------+----+
//|  1|   1.32|   1|
//|  1|   1.29|   2|
//|  1|   1.03|   3|
//|  1|   1.01|   4|
//+---+-------+----+

相关问题