1

我正在尝试创建一种将批量日期查询转换为增量查询的方法。例如,如果查询的 where 条件指定为

WHERE date > now()::date - interval '365 days' and date < now()::date

如果今天执行,这将获取一年的数据。现在,如果明天执行相同的查询,将再次获取 365 天的数据。但是,我已经拥有上一次运行的最后 364 天数据。我只想获取一天的数据,并从系统中删除一天的数据,这样我就可以得到性能更好的 365 天数据。此数据将存储在单独的临时表中。

为此,我创建了一个增量查询,它将在下次运行时执行。但是,当“日期”列不在 SELECT 子句中但在 WHERE 条件中出现时,删除单个日期数据被证明是棘手的,因为临时表架构将没有“日期”列。

所以我想到了分块执行批量查询并为该块分配一个ID。这样,我可以删除一个块并添加一个块,其他数据不受影响。

有没有办法在 postgres 或 greenplum 中实现相同的目标?就像一些内置功能一样。我浏览了整个文档,但找不到任何文档。

另外,如果没有,是否有更好的解决方案来解决这个问题。

4

1 回答 1

0

我认为这最好用聚合表之类的东西来处理(我认为问题是你有大量的聚合来处理大量数据)。这不一定会导致规范化问题(而且数据仓库通常会反规范化)。在这方面,您可以每天存储您需要的聚合数据,这样您就可以每天将封闭数据和非封闭数据减少到一条记录。将聚合保留到无法更改的数据是避免规范化防止的正常插入/更新异常所必需的。

于 2013-11-02T05:54:40.467 回答