gpt4 book ai didi

sql - Postgres 中的时间序列

转载 作者:行者123 更新时间:2023-11-29 12:32:50 25 4
gpt4 key购买 nike

我在 Redshift 上有一个庞大的电子商务交易数据库,大约有 9 亿行,标题与此有些相似。

 id | date_stamp | location | item   | amount
001 | 2009-12-28 | A1 | Apples | 2
002 | 2009-12-28 | A2 | Juice | 2
003 | 2009-12-28 | A1 | Apples | 1
004 | 2009-12-28 | A4 | Apples | 2
005 | 2009-12-29 | A1 | Juice | 6
006 | 2009-12-29 | A4 | Apples | 2
007 | 2009-12-29 | A1 | Water | 7
008 | 2009-12-28 | B7 | Juice | 14

是否可以在项目中找到趋势?例如,如果我想查看“苹果”在 2009 年 12 月 28 日和 2011 年 12 月 28 日之间在 A4 位置的销售情况,我该怎么做?理想情况下,我想生成一个具有正/负趋势的表格,有点类似于此处的帖子 - Aggregate function to detect trend in PostgreSQL我在 R 中对小型数据集进行了类似的分析,甚至使用 ggplot 对其进行可视化也不是什么大挑战,但数据库的庞大规模给我带来了一些麻烦,而且查询时间非常长。例如,

select * 
from fruitstore.sales
where item = 'Apple' and location = 'A1'
order by date_stamp
limit 1000000;

执行大约需要 2500 秒,并且经常超时。感谢您对此提供的任何帮助。

最佳答案

900M 行对于普通的 Postgres 来说是相当多的。 MPP 变体之一(如 Citus)能够更好地处理它。

另一种选择是更改您存储数据的方式。一个更有效的结构是每个月/项目/位置有 1 行,并存储一个 int 数组。这会将事情减少到 ~300M 行,这更易于管理。我怀疑您的大多数分析工具无论如何都希望将数据视为数组。

关于sql - Postgres 中的时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36289541/

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