Scala 十进制值的密集秩
如何计算十进制值的danse_秩 我有如下输入值: 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 |4Scala 十进制值的密集秩,scala,apache-spark,Scala,Apache Spark,如何计算十进制值的danse_秩 我有如下输入值: 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 像这样….在这种情况下使用窗口densite\u rank()函数 示例: import org.apache
像这样….在这种情况下使用
窗口
densite\u 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|
//+---+-------+----+
如果列具有01.03.32、1.00、89、01.04.90等数据,则该列具有字符串数据类型。如何计算排名?