在没有日期的情况下更新 oracle 中的每周事实

update weekly fact in oracle without date

我正在开展一个项目,我必须在其中创建一个 table 仅包含最近 7 天的汇总值。目标 table 的结构是:

customer_id,distinct_products

1, 20
2, 5
3, 0
4, 2
5, 3

现在将以上视为截至今天 2016 年 1 月 12 日 的值,意思是基于 (2016 年 1 月 5 日至 2016 年 1 月 12 日的汇总) )

明天我必须更新这个 table 它应该包含基于 06-JAN-2016 的数据聚合的值 至 2016 年 1 月 13 日

问题是我无法每天重新聚合所有 7 天,因为每一天都包含百万行。

我正在使用 Oracle 11g。

我认为以下逻辑应该可行

  1. 当天取总和
  2. 将其添加到当前周table目标/总计中的现有数字
  3. 将第 2 步的结果除以当前星期几,范围为 1-7,并用结果
  4. 更新聚合 table

然后,合计 table 将得到您一周的 "running" 平均值,您只需要合计当天所需的总和即可。

希望这个逻辑能有所帮助..

我发现以下步骤非常快速和准确:

1-Process 1 day (day-1 every day) data create an aggregate table customer_id,date,prod_id I am calling it Stage_Agg. Everyday add 1 day data and remove 1 day data which is >Day-7

2-Process Stage_Agg to produce a 2nd Aggregate table called Stage_Agg7 this will generate a table customer_id,distinct_prod_count7

3-Update the Fact table and you are Ok

让我知道你们的想法。