我正在开发一个项目,我必须在其中创建一个仅包含最近7天聚合值的表。目标表的结构是:
customer_id,distinct_products
1, 20
2, 5
3, 0
4, 2
5, 3
现在考虑以上为 2016年1月12日的价值,意味着汇总为(2016年1月5日至2016年1月12日)
现在明天,当我必须更新此表时,它应该包含基于来自 06-JAN-2016的数据汇总的值 至2016年1月13日
问题是我每天都无法重新聚合所有7天,因为每天都有数百万行。
我正在使用Oracle 11g。
答案 0 :(得分:0)
我认为以下逻辑应该有效
汇总表将使您的"运行"本周的平均值,您只需要汇总当前所需的当天。
希望这个逻辑有帮助..
答案 1 :(得分:0)
按照以下步骤,我发现工作非常快速和准确:
1 - 处理1天(每天第1天)数据创建聚合表
customer_id,date,prod_id
我称之为Stage_Agg。每天添加1天数据并删除1天数据>Day-7
2-Process Stage_Agg生成一个名为Stage_Agg7的第二个聚合表,这将生成一个表
customer_id,distinct_prod_count7
3 - 更新事实表,你没事了
让我知道你们的想法。