查询结果重用

在 Athena 中重新运行查询时,可以选择重用上次存储的查询结果。此选项可以提高性能并降低扫描字节数方面的成本。例如,如果我们知道结果在给定时间范围内不会更改,则重用查询结果非常有用。可以指定重用查询结果的最长期限,只要存储的结果不早于指定的期限,Athena 就会使用它。

开启Reuse query results

如果使用的Athena V2引擎,则这个功能不能使用,只有升级到V3才可以:

image-20231130094433629

开启的方式是编辑workgroup:

image-20231130094330187

测试Reuse Query results

运行以下SQL查询:

select c.customer_id,concat("firstname",' ',"lastname") as full_name,
sum(cast(price as decimal(6,2))) as lifetime_value,
count("timestamp") as lifetime_purchase_count,
sum(cast(price as decimal(6,2))) /count("timestamp") as average_spend_per_purchase
from customers_parquet c join sales_parquet s on c.customer_id = s.customer_id
group by c.customer_id,concat("firstname",' ',"lastname"),c.country;

image-20231130094550528

运行完成后,打开Reuse query results,并设置时间为30分钟:

image-20231130094646688

单击“Run again” 按钮重新运行查询。请注意与原始运行相比,运行时间和扫描的数据的差异:

img

转到查询编辑器中的“Recent queries”选项卡,然后检查“Cache”列以查看添加到执行中的“Result reuse”。这表明对于该查询,结果被重用:

image-20231130095326313