如何计算十进制值的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像这样。。。。。
pu82cl6c1#
使用window dense_rank() 此案例的函数。例子:
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| //+---+-------+----+
1条答案
按热度按时间pu82cl6c1#
使用
window
dense_rank()
此案例的函数。例子: