【发布时间】:2019-07-29 16:43:53
【问题描述】:
我有以下 pyspark df:
+------------------+--------+-------+
| ID| Assets|Revenue|
+------------------+--------+-------+
|201542399349300619| 1633944| 32850|
|201542399349300629| 3979760| 850914|
|201542399349300634| 3402687|1983568|
|201542399349300724| 1138291|1097553|
|201522369349300122| 1401406|1010828|
|201522369349300137| 16948| 171534|
|201522369349300142|13474056|2285323|
|201522369349300202| 481045| 241788|
|201522369349300207| 700861|1185640|
|201522369349300227| 178479| 267976|
+------------------+--------+-------+
对于每一行,我希望能够获得资产数量在 20% 以内的行。例如,对于第一行 (ID=201542399349300619),我希望能够获取资产在 1,633,944 的 20% +/- 范围内的所有行(因此在 1,307,155 到 1,960,732 之间):
+------------------+--------+-------+
| ID| Assets|Revenue|
+------------------+--------+-------+
|201542399349300619| 1633944| 32850|
|201522369349300122| 1401406|1010828|
使用这个子集表,我想获取平均资产并将其添加为新列。所以对于上面的例子,平均资产为 (1633944+1401406) = 1517675
+------------------+--------+-------+---------+
| ID| Assets|Revenue|AvgAssets|
+------------------+--------+-------+---------+
|201542399349300619| 1633944| 32850| 1517675|
【问题讨论】:
-
@pault 我的错,我已经纠正了错别字。我对 SQL 不是很熟悉,因此我只想获得一些指导,了解如何利用现有的技术实现这一目标。
标签: python sql pyspark apache-spark-sql pyspark-sql