Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-在对照另一个表中的值检查分区字段时,我可以使用分区吗?_Sql_Performance_Amazon Athena_Partition - Fatal编程技术网

SQL-在对照另一个表中的值检查分区字段时,我可以使用分区吗?

SQL-在对照另一个表中的值检查分区字段时,我可以使用分区吗?,sql,performance,amazon-athena,partition,Sql,Performance,Amazon Athena,Partition,我在Athena SQL中查询以下用例: 我有一个表a,该表按日期划分: 日期|购买数量|类别 在另一个表B中,我有500个事件发生在特定日期。我想访问每个事件前一周的来自的聚合数据: 事件ID |事件日期|事件日期前7天|类别 最后,我想为每个活动提供活动发生前7天的购买总额 但是,当使用where条款时,例如,在事件日期之前的B.7天和事件日期之间的a日期 不再使用上的分区,并且查询所有数据,这大大降低了性能 在使用分区并因此保持高性能时,如何获取每个事件前一周的数据 SQL查询: sele

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

我有一个表a,该表按日期划分: 日期|购买数量|类别

在另一个表B中,我有500个事件发生在特定日期。我想访问每个事件前一周的来自的聚合数据: 事件ID |事件日期|事件日期前7天|类别

最后,我想为每个活动提供活动发生前7天的购买总额

但是,当使用where条款时,例如,在事件日期之前的B.7天和事件日期之间的a日期 不再使用上的分区,并且查询所有数据,这大大降低了性能

在使用分区并因此保持高性能时,如何获取每个事件前一周的数据

SQL查询:

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

Athena是基于presto的,在presto中,您的查询试图在事件日期和事件日期之前的b.7天和b.event日期子句之间动态生成值,而该值在计划时间之前是未知的,因此您的查询最终会扫描所有分区

社区已经在开发一个名为的特性,该特性将有助于解决此类性能相关问题


您还可以参考关于这个问题的详细内容和可能的解决方法。

您能用SQL查询更新您的问题吗?Hi@Prabhakarredy,当然,刚刚更新