SSIS - 检测真实删除和更新数据仓库的快速方法
SSIS - Fast way of detecting true deletes and updating data warehouse
我正在寻找一种有效的方法来检测生产中已删除的记录并更新数据仓库以反映这些删除,因为 table 超过 1200 万行并且包含用于会计目的的交易数据。
最初,一切都是由我之前的某个人在存储过程中完成的,我的任务是将流程转移到 SSIS。
到目前为止我的测试模式是这样的:
数据流任务内部:
我正在使用 MD5 哈希来加速 ETL 过程,如 this article 中所示。
由于不必在内存中存储如此多的行以进行比较,并且同时删除了大量的条件拆分处理,这应该会极大地提高流程的速度。
但问题是它没有考虑生产中删除的记录。
我应该怎么做?这对你来说可能很简单,但我是 SSIS 的新手,所以我不确定如何正确提问。
提前致谢。
我认为您需要采用数据流才能使用合并联接而不是查找。
这样你就可以看到什么是 new/changed & 已删除。
您需要通过相同的连接键(在本例中为您的哈希列)对两个流进行排序。
就我个人而言,我不确定我是否会打扰,相反,我只是暂存我所有的产品数据,然后执行一个 3 向 SQL 合并语句来一次处理插入更新和删除。如果愿意,您可以将哈希列保留为连接键。
我最终使用的解决方案是添加另一个数据流任务并使用查找转换来查找与我们的事实 table 相比生产中不存在的记录。如我上面的问题所示,此任务发生在所有插入和更新之后。
然后我们可以在执行SQL任务中批量删除丢失的记录。
内部数据流任务:
内部查找转换:
(注意将行重定向到不匹配的输出)
因此,如果 ID 不匹配,这些行将被重定向到我们设置的不匹配输出,以进入暂存 table。然后,我们将暂存加入事实 table 并在执行 SQL 任务中应用如下所示的删除。
我正在寻找一种有效的方法来检测生产中已删除的记录并更新数据仓库以反映这些删除,因为 table 超过 1200 万行并且包含用于会计目的的交易数据。
最初,一切都是由我之前的某个人在存储过程中完成的,我的任务是将流程转移到 SSIS。
到目前为止我的测试模式是这样的:
数据流任务内部:
我正在使用 MD5 哈希来加速 ETL 过程,如 this article 中所示。
由于不必在内存中存储如此多的行以进行比较,并且同时删除了大量的条件拆分处理,这应该会极大地提高流程的速度。
但问题是它没有考虑生产中删除的记录。
我应该怎么做?这对你来说可能很简单,但我是 SSIS 的新手,所以我不确定如何正确提问。
提前致谢。
我认为您需要采用数据流才能使用合并联接而不是查找。 这样你就可以看到什么是 new/changed & 已删除。 您需要通过相同的连接键(在本例中为您的哈希列)对两个流进行排序。
就我个人而言,我不确定我是否会打扰,相反,我只是暂存我所有的产品数据,然后执行一个 3 向 SQL 合并语句来一次处理插入更新和删除。如果愿意,您可以将哈希列保留为连接键。
我最终使用的解决方案是添加另一个数据流任务并使用查找转换来查找与我们的事实 table 相比生产中不存在的记录。如我上面的问题所示,此任务发生在所有插入和更新之后。
然后我们可以在执行SQL任务中批量删除丢失的记录。
内部数据流任务:
内部查找转换:
(注意将行重定向到不匹配的输出)
因此,如果 ID 不匹配,这些行将被重定向到我们设置的不匹配输出,以进入暂存 table。然后,我们将暂存加入事实 table 并在执行 SQL 任务中应用如下所示的删除。