首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL -在根据另一个表中的值检查分区字段时,是否可以使用分区?

SQL -在根据另一个表中的值检查分区字段时,是否可以使用分区?
EN

Stack Overflow用户
提问于 2019-12-20 09:29:57
回答 1查看 38关注 0票数 0

我在Athena SQL中查询以下用例:

我有一个表A,它是在Date: Date | Number of Purchase| Category进行分区的

在另一个表B中,我有500个在特定日期发生的事件。我想要访问A在以下每个事件之前一周的聚合数据: EventID | Event_Date | 7_Days_Before_Event_Date | Category

我想为每个活动结束,在活动发生前7天的购买总额。

然而,当使用where子句时,例如。A.Date between B.7_Days_Before_Event_Date and B.Event_Date不再使用A上的分区,并且查询所有数据,从而极大地降低了性能。

如何在使用分区的同时获取每个事件前一周的数据,从而保持高性能?

SQL查询:

代码语言:javascript
运行
复制
select b.event_id, sum(a.number_of_purchases)
from dbo.tableA a
inner join dbo.tableB b on a.category = b.category
where a.date between b.7_days_before_event_date and b.event_date
group by b.event_id
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-23 12:32:55

雅典娜是基于presto的,在presto中,您的查询试图动态地为between b.7_days_before_event_date and b.event_date子句生成值,而这个值直到规划时才知道,所以您的查询最终会扫描所有分区。

社区已经在开发一个名为dynamic filtering的功能,它将帮助解决这类与性能相关的问题。

您也可以参考link,它详细讨论了这个问题以及可能的解决方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59418861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档