我有一个表格,格式如下:
以下是更友好的数据集:
| 指数|得分|日期|col2|
| - -----|- -----|- -----|- -----|
| 七零六|0.5| 10/31/22 14:45|一个|
| 七零九|0.7| 10/31/22 13:42|一个|
| 七零八|0.7| 10/31/22 15:41|一个|
| 七零六|0.5| 10/31/22 14:45|一个|
| 七零九|0.7| 10/31/22 13:42|一个|
| 七零六|0.5| 10/31/22 14:45|一个|
| 七百零五|0.5| 10/31/22 15:02|一个|
| 七零八|0.7| 10/31/22 15:41|一个|
| 七零八|0.7| 10/31/22 15:41|一个|
| 七零九|0.7| 10/31/22 13:42|一个|
| 七零八|0.7| 10/31/22 15:41|一个|
| 七零九|0.7| 10/31/22 13:42|一个|
| 七零六|0.5| 10/31/22 14:45|一个|
| 七零九|0.7| 10/31/22 13:42|一个|
| 七零九|0.7| 10/31/22 13:42|一个|
| 七零九|0.7| 10/31/22 13:42|一个|
| 七零六|0.5| 10/31/22 14:45|一个|
| 七零六|0.5| 10/31/22 14:45|一个|
| 七百零五|0.5| 10/31/22 15:02|一个|
| 七百零五|0.5| 10/31/22 15:02|一个|
| 七零九|0.7| 10/31/22 13:42| B|
| 七零七|0.5| 10/31/22 15:15| B|
| 七零六|0.5| 10/31/22 14:45| B|
| 七零八|0.7| 10/31/22 15:41| B|
| 七百零五|0.5| 10/31/22 15:02| B|
| 七零八|0.7| 10/31/22 15:41| C类|
| 七零七|0.5| 10/31/22 15:15| C类|
| 七零六|0.5| 10/31/22 14:45| C类|
| 七零七|0.5| 10/31/22 15:15| C类|
| 七零七|0.5| 10/31/22 15:15| C类|
| 七零八|0.7| 10/31/22 15:41| C类|
| 七零八|0.7| 10/31/22 15:41| C类|
| 七零九|0.7| 10/31/22 13:42| C类|
| 七百零五|0.5| 10/31/22 15:02| C类|
| 七零六|0.5| 10/31/22 14:45| C类|
| 七百零五|0.5| 10/31/22 15:02| C类|
| 七零九|0.7| 10/31/22 13:42| C类|
| 七百零五|0.5| 10/31/22 15:02| C类|
| 七零六|0.5| 10/31/22 14:45| C类|
| 七零九|0.7| 10/31/22 13:42| C类|
| 七零八|0.7| 10/31/22 15:41| C类|
| 七零九|0.7| 10/31/22 13:42| C类|
| 七零六|0.5| 10/31/22 14:45| C类|
| 七百零五|0.5| 10/31/22 15:02| C类|
| 七零七|0.5| 10/31/22 15:15| C类|
从它我需要得到最高的价值的基础上,在这种情况下,它将是第一个。我使用spark SQL来创建查询,它已经根据范围的第一天和最后一天的条件来获取最大索引,最大分数和日期。给我最大日期。但是,我需要有max distinct(我知道这可以在常规SQL中完成,但是spark/Pyspark似乎没有可以在SQL查询中使用的等效函数)。
查询如下:
spark.sql("SELECT DISTINCT max(index) AS index, \
max(score) AS score, col2, col3,\
col4,\
max(make_timestamp(last_day(col5))) AS date\
FROM table \
GROUP BY index, score,\
col3, col4, date").registerTempTable("table1")
如果我使用纯SQL,我可以使用MAXDistinct(),但不支持此函数,它的等效函数是什么?这样我就可以坐第一排了
并且丢弃其余的,因为它们都是相同行的重复,但是由于时间戳,这3列不同。
1条答案
按热度按时间ybzsozfc1#
我不确定我是否理解正确,但根据您的打印,您需要使用Pyspark的最早时间戳行。所以这段代码应该能用