交叉流数据更改 - EDW

时间:2012-05-20 23:38:35

标签: sql-server-2008 triggers data-warehouse

我遇到了数据流B依赖于数据流A的情况。每当数据流A发生变化时,都需要重新处理流B.因此需要一个通用的过程来识别跨数据流的变化并触发重新处理任务。 除了触发器之外,有没有一种好方法可以做到这一点。

1 个答案:

答案 0 :(得分:0)

您的问题相当不明确,我认为任何答案在很大程度上取决于您的数据是什么样的,如何加载数据,如何识别更改,是否需要向用户显示一个事实或维度值的多个版本等

以下是我们如何处理它的简短描述,它可能会或可能不会帮助您:

  1. 我们每天递增地加载原始数据,即我们在源系统中加载过去24小时内生成的所有数据(我正在计算时间问题,但这里并不重要)
  2. 我们将原始数据插入到加载表中;该表已包含我们之前从同一来源加载的所有数据
  3. 如果行是全新的(即原始数据中的PK值是新的),则会正常处理
  4. 如果我们在表格中找到了已经有PK的行,我们知道它是我们已经处理过的数据的更新版本
  5. 在我们找到更新数据的地方,我们会将其标记为进行特殊处理,并根据它重新生成任何数据(这都是在存储过程中完成的)
  6. 我认为您正在询问如何执行第5步,但这取决于更改的数据以及用户期望发生的情况。例如,如果订单中的一个项目发生更改,我们会重新处理整个订单以确保订单级别值正确。如果客户地址发生变化,我们必须将其重新分配到新的销售区域。

    没有通用的方法来识别数据更改并对其进行处理,因为每个人的数据和要求都不同,每个人都有不同的工具集和不同的约束等等。

    如果您可以提出更具体的问题,那么您可能会得到更好的答案,例如:如果你已经有一个基于触发器的工作解决方案那么你为什么要改变?你有什么问题让你寻找替代方案?