在没有日期的情况下更新 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。
我认为以下逻辑应该可行
- 当天取总和
- 将其添加到当前周table目标/总计中的现有数字
- 将第 2 步的结果除以当前星期几,范围为 1-7,并用结果
更新聚合 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
让我知道你们的想法。
我正在开展一个项目,我必须在其中创建一个 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。
我认为以下逻辑应该可行
- 当天取总和
- 将其添加到当前周table目标/总计中的现有数字
- 将第 2 步的结果除以当前星期几,范围为 1-7,并用结果 更新聚合 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
让我知道你们的想法。