1
我試圖理解密集排列和行數之間的區別。每個新窗口分區都從1開始。排列的行數是不是總是從1開始的?任何幫助,將不勝感激火花中密集排列和行數的差異
我試圖理解密集排列和行數之間的區別。每個新窗口分區都從1開始。排列的行數是不是總是從1開始的?任何幫助,將不勝感激火花中密集排列和行數的差異
區別是當訂購欄中有「關係」。檢查下面的例子:
import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions._
val df = Seq(("a", 10), ("a", 10), ("a", 20)).toDF("col1", "col2")
val windowSpec = Window.partitionBy("col1").orderBy("col2")
df
.withColumn("rank", rank().over(windowSpec))
.withColumn("dense_rank", dense_rank().over(windowSpec))
.withColumn("row_number", row_number().over(windowSpec)).show
+----+----+----+----------+----------+
|col1|col2|rank|dense_rank|row_number|
+----+----+----+----------+----------+
| a| 10| 1| 1| 1|
| a| 10| 1| 1| 2|
| a| 20| 3| 2| 3|
+----+----+----+----------+----------+
注意,值「10」在col2
同一窗口(col1 = "a"
)中存在兩次。那是當你看到三個功能之間的區別時。
謝謝@丹尼爾。 – John
@丹尼爾這是一個很好的答案,有一個偉大的視覺元素來推動點。 –
@JasonWolosonovich我很欣賞這些反饋。 –