J'ai besoin d'une fonction de fenêtre qui partitionne par certaines clés (= noms de colonnes), les commandes par un autre nom de colonne et renvoie les lignes avec les rangs x supérieurs.Comment utiliser orderby() dans l'ordre décroissant des fonctions de la fenêtre Spark?
Cela fonctionne très bien pour l'ordre croissant:
def getTopX(df: DataFrame, top_x: String, top_key: String, top_value:String): DataFrame ={
val top_keys: List[String] = top_key.split(", ").map(_.trim).toList
val w = Window.partitionBy(top_keys(1),top_keys.drop(1):_*)
.orderBy(top_value)
val rankCondition = "rn < "+top_x.toString
val dfTop = df.withColumn("rn",row_number().over(w))
.where(rankCondition).drop("rn")
return dfTop
}
Mais quand j'essaie de le changer à orderBy(desc(top_value))
ou orderBy(top_value.desc)
en ligne 4, je reçois une erreur de syntaxe. Quelle est la syntaxe correcte ici?
Quel est le message d'erreur que vous obtenez? –