我有一個火花資料框:
------ ---------------- ------- ------ ---------
|name | pDate| status|user |userCount|
------ ---------------- ------- ------ ---------
|janani|2022-03-04 |active |qwe123|1 |
|raj |2022-03-03 |active |qwe123|1 |
|ram |2022-03-01 |active |qwe123|1 |
|ram |2022-03-02 |active |qwe123|1 |
------ ---------------- ------- ------ ---------
當我使用以下代碼旋轉資料框時
pvtcountuser = countuser.groupby('pDate','name').pivot('pDate').max('userCount').fillna(0)
我得到:
---------------- ------ ---------- ---------- ---------- ----------
|pDate |name |2022-03-01|2022-03-02|2022-03-03|2022-03-04|
---------------- ------ ---------- ---------- ---------- ----------
|2022-03-04 |janani|0 |0 |0 |1 |
|2022-03-03 |raj |0 |0 |1 |0 |
|2022-03-01 |ram |1 |0 |0 |0 |
|2022-03-02 |ram |0 |1 |0 |0 |
---------------- ------ ---------- ---------- ---------- ----------
但所需的解決方案是:
---------------- ------ ---------- ---------- ---------- ----------
|pDate |name |2022-03-01|2022-03-02|2022-03-03|2022-03-04|
---------------- ------ ---------- ---------- ---------- ----------
|2022-03-04 |janani|0 |0 |0 |1 |
|2022-03-03 |raj |0 |0 |1 |0 |
|2022-03-01 |ram |1 |1 |0 |0 |
---------------- ------ ---------- ---------- ---------- ----------
請幫忙
uj5u.com熱心網友回復:
每個名稱的 min(pDate),可以在樞軸之前使用 windows 函式實作。
擁有它后,您可以按名稱和 min_pDate 進行聚合。
import pyspark.sql.functions as F
from pyspark.sql.window import Window
sql_stmt = '''
select *
from values ('janani',date '2022-03-04','active','qwe123',1)
,('raj' ,date '2022-03-03','active','qwe123',1)
,('ram' ,date '2022-03-01','active','qwe123',1)
,('ram' ,date '2022-03-02','active','qwe123',1) as t (name,pDate,status,user,userCount)
'''
countuser = spark.sql(sql_stmt)
pvtcountuser = (countuser
.withColumn('min_pDate', F.min('pDate').over(Window.partitionBy('name')))
.groupby('name', 'min_pDate')
.pivot('pDate')
.max('userCount')
.fillna(0)
.withColumnRenamed('min_pDate','pDate')
)
pvtcountuser.show()
------ ---------- ---------- ---------- ---------- ----------
| name| pDate|2022-03-01|2022-03-02|2022-03-03|2022-03-04|
------ ---------- ---------- ---------- ---------- ----------
|janani|2022-03-04| 0| 0| 0| 1|
| raj|2022-03-03| 0| 0| 1| 0|
| ram|2022-03-01| 1| 1| 0| 0|
------ ---------- ---------- ---------- ---------- ----------
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/441154.html
標籤:sql 阿帕奇火花 pyspark apache-spark-sql
