gpt4 book ai didi

apache-spark-sql - SparkSQL - 相关标量子查询只能包含相等谓词

转载 作者:行者123 更新时间:2023-12-05 04:11:56 25 4
gpt4 key购买 nike

我想用 Spark SQL 2.0 执行以下查询

SELECT
a.id as id,
(SELECT SUM(b.points)
FROM tableB b
WHERE b.id = a.id AND b.date <= a.date) AS points
FROM tableA a

但是我得到以下错误

相关标量子查询只能包含相等谓词

知道如何重写查询或使用两个数据帧 tableA 和 tableB 之间的操作来使其正常工作吗?

最佳答案

select a.id as id, 
sum(b.points) as points
from a, b
where a.id = b.id
and b.date <= a.date
group by a.id
;

跳过 sub-select 和 group by id,确保 ids 和 b's points 列的总和之间是一对一的关系。

这是我使用的“肮脏”示例:

select * from a ;

id|date
1|2017-01-22 17:59:49
2|2017-01-22 18:00:00
3|2017-01-22 18:00:05
4|2017-01-22 18:00:11
5|2017-01-22 18:00:15

select * from b ;
id|points|date
1|12|2017-01-21 18:03:20
3|25|2017-01-21 18:03:37
5|17|2017-01-21 18:03:55
2|-1|2017-01-22 18:04:27
4|-4|2017-01-22 18:04:35
5|400|2017-01-20 18:17:31
5|-1000|2017-01-23 18:18:36

注意 b 有三个 id = 5 的条目,两个在 a.date 之前,一个在 a.date 之后。

select a.id, sum(b.points) as points from a, b where a.id = b.id and b.date <= a.date group by a.id ;
1|12
3|25
5|417

我还确认支持“分组依据”:http://spark.apache.org/docs/latest/sql-programming-guide.html#supported-hive-features

关于apache-spark-sql - SparkSQL - 相关标量子查询只能包含相等谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41631199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com