我遇到了一个场景,其中数据流 B 依赖于数据流 A。每当数据流 A 发生变化时,都需要重新处理流 B。因此,需要一个通用过程来识别跨数据流的变化并触发重新处理处理任务。除了触发器之外,还有什么好方法可以做到这一点。
问问题
61 次
1 回答
0
您的问题相当不清楚,我认为任何答案在很大程度上取决于您的数据是什么样子、如何加载它、如何识别更改、是否需要向用户显示一个事实或维度值的多个版本等。
以下是我们如何处理它的简短描述,它可能对您有帮助,也可能对您没有帮助:
- 我们每天以增量方式加载原始数据,即我们在源系统中加载过去 24 小时内生成的所有数据(我在掩饰时间问题,但它们在这里并不重要)
- 我们将原始数据插入到加载表中;该表已经包含我们之前从同一源加载的所有数据
- 如果行是全新的(即原始数据中的 PK 值是新的),它们会被正常处理
- 如果我们在表中找到我们已经有 PK 的行,我们知道它是我们已经处理过的数据的更新版本
- 在我们找到更新数据的地方,我们将其标记为特殊处理并根据它重新生成任何数据(这一切都在存储过程中完成)
我认为您在问如何执行第 5 步,但这取决于更改的数据以及您的用户期望发生的情况。例如,如果订单中的一件商品发生变化,我们会重新处理整个订单,以确保订单级别的值正确无误。如果客户地址发生变化,我们必须将他重新分配到新的销售区域。
没有通用的方法来识别和处理数据变化,因为每个人的数据和需求都不同,每个人都有不同的工具集和不同的约束等等。
如果您可以使您的问题更具体,那么也许您会得到更好的答案,例如,如果您已经有了基于触发器的有效解决方案,那么您为什么要更改?你有什么问题让你寻找替代品?
于 2012-05-23T14:21:21.613 回答