在spark sql数据帧查询中使用分区的sql

在spark sql数据帧查询中使用分区的sql,sql,apache-spark-sql,bigdata,pyspark-sql,with-statement,Sql,Apache Spark Sql,Bigdata,Pyspark Sql,With Statement,我有这样一个sql查询: WITH cte AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY [date] ORDER BY TradedVolumSum DESC) AS rn FROM tempTrades ) SELECT * FROM cte WHERE rn = 1 我想在spark sql中使用它来查询我的数据帧 我的数据框看起来像: 我希望在SecurityDescription中,每天只允许traded

我有这样一个sql查询:

WITH cte AS
(
   SELECT *,
         ROW_NUMBER() OVER (PARTITION BY [date] ORDER BY TradedVolumSum DESC) AS rn
   FROM tempTrades
)
SELECT *
FROM cte
WHERE rn = 1
我想在spark sql中使用它来查询我的数据帧

我的数据框看起来像:

我希望在SecurityDescription中,每天只允许tradedVolumSum的最大值。所以我想看看这样的东西:

如何在python中模拟spark sql中的相同行为


谢谢

以下是假设您的数据帧名称为TENTRADES时出现问题的代码:

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

win_temp = Window.partitionBy(F.col("[date]")).orderBy(F.col("TradedVolumSum").desc())
tempTrades.withColumn(
    "rn",
    F.row_number().over(win_temp)
).filter(
    F.col("rn") == 1
)

事实上,我可以问另一个问题吗?谢谢。我的情况是,我需要每天比较条目并报告差异。例如,第一天有记录a、b、c,第二天有记录c、d、e,第三天有记录f、g。我应该报告a,b,c,d,e,f,g的集合。这意味着,例如,公司a、b、c在第一天有业务,然后在第二天增加了业务d和e,第三天增加了业务f和g。我需要说明哪些业务是在哪一天添加到系统中进行业务选择[Date],securityDesc,TradeVolumsum,从选择[Date]开始的助记符,securityDesc,TradeVolumsum,助记符,按[Date]划分的行数按助记符描述从B6Table q开始按[Date]排序这是我的查询,它可以按天分组。所有我需要找到的是每天新添加的条目,并报告相同的信息专栏,但你能在不同的线程中提出相同的问题并与我共享链接吗?如果其他人面临相同的问题,这将对他们有所帮助。将在该线程中回答相同的问题。