无法使用pyspark sql窗口函数上卷Dataframe的行

wj8zmpe1  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(469)

我有一个Dataframe,我想把数据汇总成7天,并对一些函数进行聚合。我有一个pysparksql数据框架,比如------

Sale_Date|P_1|P_2|P_3|G_1|G_2|G_3|Total_Sale|Sale_Amt|Promo_Disc_Amt|
|2013-04-10| 1| 9| 1| 1| 1| 1| 1| 295.0|0.0|
|2013-04-11| 1| 9| 1| 1| 1| 1| 3| 567.0|0.0|
|2013-04-12| 1| 9| 1| 1| 1| 1| 2| 500.0|200.0|
|2013-04-13| 1| 9| 1| 1| 1| 1| 1| 245.0|20.0|
|2013-04-14| 1| 9| 1| 1| 1| 1| 1| 245.0|0.0|
|2013-04-15| 1| 9| 1| 1| 1| 1| 2| 500.0|200.0|
|2013-04-16| 1| 9| 1| 1| 1| 1| 1| 250.0|0.0|
|2013-04-17| 1| 9| 1| 1| 1| 1| 1| 250.0|0.0|
|2013-04-18| 1| 9| 1| 1| 1| 1| 1| 250.0|0.0|

根据这个线程,我在Dataframe上应用了一个窗口函数,如下所示-

days = lambda i: i * 86400
windowSp = Window().partitionBy(dataframeOfquery3["P_1"],dataframeOfquery3["P_2"],dataframeOfquery3["P_3"],dataframeOfquery3["G_1"],dataframeOfquery3["G_2"],dataframeOfquery3["G_3"])\
          .orderBy(dataframeOfquery3["Sale_Date"].cast("timestamp").cast("long").desc())\
          .rangeBetween(-(days(7)), 0)

现在我想执行一些聚合,即应用一些windows函数,如下所示--

df = dataframeOfquery3.select(min(dataframeOfquery3["Sale_Date"]).over(windowSp).alias("Sale_Date"),first(dataframeOfquery3["P_1"]).over(windowSp).alias("P_1"))

但是我不能得到想要的输出。期望输出为-

Sale_Date,P_1,P_2,P_3,g_1,G-2,G_3,Total_Sale,Sale_Amt,Promo_Disc_Amt
|2013-04-10| 1| 9| 1| 1| 1| 1| 11| 2602.0|420.0|
|2013-04-17| 1| 9| 1| 1| 1| 1| 7| 1902.0|120.0|
|2013-04-24| 1| 9| 1| 1| 1| 1| 10| 2402.0|120.0|

但它不起作用。我坚持下去了。如果有人能帮我解决这个问题,我将不胜感激。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题