PySpark sql 比较每天的记录并报告差异
PySpark sql compare records on each day and report the differences
所以我的问题是我有这个数据集:
它显示商家在特定日期开展业务。我想要实现的是报告在哪一天添加了哪些业务。也许我正在寻找一些答案:
我设法用这个 sql:
整理了所有记录
select [Date]
,Mnemonic
,securityDesc
,sum(cast(TradedVolume as money)) as TradedVolumSum
FROM SomeTable
group by [Date],Mnemonic,securityDesc
但我不知道如何将每一天的记录与另一天进行比较,并将第二天不存在的记录导出到另一天table。我厌倦了 sql 分区条款,但它使它变得复杂。我可以使用 sql 或 Pyspark sql python 组合。
你能告诉我如何解决这个问题吗?
下面是针对您的问题的数据框操作,您可能需要稍微调整一下,因为我没有它的示例数据,通过查看您的数据编写代码,如果这能解决您的问题,请告诉我:
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()
所以我的问题是我有这个数据集:
它显示商家在特定日期开展业务。我想要实现的是报告在哪一天添加了哪些业务。也许我正在寻找一些答案:
我设法用这个 sql:
整理了所有记录select [Date]
,Mnemonic
,securityDesc
,sum(cast(TradedVolume as money)) as TradedVolumSum
FROM SomeTable
group by [Date],Mnemonic,securityDesc
但我不知道如何将每一天的记录与另一天进行比较,并将第二天不存在的记录导出到另一天table。我厌倦了 sql 分区条款,但它使它变得复杂。我可以使用 sql 或 Pyspark sql python 组合。
你能告诉我如何解决这个问题吗?
下面是针对您的问题的数据框操作,您可能需要稍微调整一下,因为我没有它的示例数据,通过查看您的数据编写代码,如果这能解决您的问题,请告诉我:
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()