sql 在 spark sql 数据帧查询中使用分区
sql With partition use in spark sql dataframe query
我有一个 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 中模拟相同的行为?
谢谢!
假设您的数据框名称是 tempTrades,下面是解决您的问题的代码:
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
)
我有一个 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 中模拟相同的行为?
谢谢!
假设您的数据框名称是 tempTrades,下面是解决您的问题的代码:
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
)