因为您传递了列列表,所以引发了异常。
Dataframe.select外观签名如下
df.select(self, *cols)
使用窗口函数的表达式是一个与其他列一样的列,因此您需要的是这样的内容:
w = Window.partitionBy("id").orderBy("dt") # Just for claritydf.select("id","dt", count("dt").over(w).alias("count")).show()## +---+---+-----+## | id| dt|count|## +---+---+-----+## |234| 0| 1|## |456| 0| 1|## |456| 1| 2|## |456| 2| 3|## |123| 0| 1|## |123| 1| 2|## +---+---+-----+一般来说,Spark SQL窗口函数的行为与任何现代RDBMS中的行为完全相同。



