PySpark SQL比较每天的记录并报告差异

时间:2018-09-02 19:12:37

标签: python sql dataframe pyspark pyspark-sql

所以我的问题是我有这个数据集:

enter image description here

,它显示企业在特定日期开展业务。我要实现的是报告在哪一天添加哪些业务。也许我希望通过以下方式得到答案:

enter image description here

我设法使用此sql整理所有记录:

select [Date]
,Mnemonic
,securityDesc
,sum(cast(TradedVolume as money)) as TradedVolumSum
FROM SomeTable
group by [Date],Mnemonic,securityDesc

但是我不知道如何将每一天的记录与前一天进行比较,并将第二天的不存在记录导出到另一个表中。我对分区群集的SQL感到厌倦,但这使它变得复杂。我可以使用sql或Pyspark sql python组合。

您能告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

下面是针对您的问题的数据框操作,您可能需要稍作调整,因为我没有示例数据,请通过查看数据来编写代码,请告诉我是否可以解决您的问题:

import pyspark.sql.functions as F
from pyspark.sql import Window

some_win = Window.partitionBy("securityDesc").orderBy(F.col("[date]").asc())
some_table.withColumn(
    "buisness_added_day",
    F.first(F.col("id")).over(some_win)
).select(
    "buisness_added_day",
    "securityDesc",
    "TradedVolumSum",
    "Mnemonic"
).distinct().orderBy("buisness_added_day").show()