我的ERP数据库中没有销售订单的历史信息。我有一个包含销售订单的表。批准销售订单后,将其转换为发票,并删除记录销售订单。
我可以在ERP中编写一个只包含我需要的信息的历史表。我认为这是数据仓库应该解决的问题(也是出于个人兴趣)。
我想看看按日期我有多少销售订单。例如,我想看到我有X个订单的平均值,每月的总价值为XXX。
我的想法只是添加列"有效从"one_answers"直到"。从那里我被阻止了,我最初的想法是在哪里使用SCD,但据我所知,在主键上这样做是不可能的。
我是否需要创建一个新的事实表(就像我在ERP数据库中做的那样)?我不想对销售订单表中的插入触发器或删除触发器也进行编程。我们在一天结束时清理销售订单表,它需要在晚上更新数据仓库时更新。对于这种情况,我不需要考虑订单不会被批准以及我将存储不相关的记录。
据我所知,您的数据模型不好。
<<p> 案例/strong>有一个销售订单表。此表中的记录不保留(例如,状态改变或简单地复制到"ordered"表中),而是删除。
这是第一个错误
其次,你说你不想要监听delete触发器。不幸的是,据我所知,删除可以在一天中的每一次发生。因此,从销售订单表收集数据的作业必须每分钟运行一次,至少如果批准可以非常快地发生的话。这也是一个有问题的设计决策。就我个人而言,我不会以DWH开头。我将从一个简单的工作开始,当插入触发器出现时,它将填充新的销售数据。这是因为随着时间的推移,增量检查将变得昂贵。
然后这个表,如果它包含了所有的信息,可以用于数据分析。
但是您还需要确定取消订单时的流程。你怎么知道那些订单被删除是因为它们被取消了,而不是因为它们被批准了呢?
当你在过程的步骤中有一个更清晰的概念时,在DWH中使用数据将变得更容易。但是,如果事先没有为至少状态变化定义良好的流程,即使是DWH也无济于事。