SQL Server SCD II实现困境

时间:2017-09-01 17:10:48

标签: sql-server sql-server-2016 scd

我有一个80个字段以北的病人表,其中我需要保存所有字段的历史数据。为了澄清,并非所有字段都“需要”版本控制,尽管决定只保留旧记录的完整副本。

为了澄清,这是一个ETL过程,将在非工作时间进行。

这里似乎有一些方法,虽然我不知道哪一种最适合我,因为我之前没有这样做过。

选项1 :使用SSIS进行SCD实施   Pro:由于我们无论如何都在使用SSIS来获取数据,因此只需继续使用相同的工具就可以了   Con:我在SSIS上读过一些关于SCD性能的文章 - 例如:https://chrisjarrintaylor.co.uk/2012/07/03/ssis-scd-vs-merge-statement-performance-comparison/

选项2 :在tsql语句中使用MERGE   专业:写作简短,易于理解 - 所有步骤都在一个中   Con:如果我们尝试在80多个字段上写条件,可能会很麻烦。我们可能还会在许多字段上执行OR的性能问题(如果有的话,如果有的话) 以下方法对我有用,虽然以这种方式编写,意味着很长的合并声明:Need help understanding alternatives to scd in SSIS

选项3 INSERT所有新记录,使用CTE清理重复项(没有更改的重复项),使用UPDATE语句停用这些记录哪个改变了   亲:没有凌乱的OR陈述,写起来也不太难理解 - 表现似乎不是一个问题(我们过去曾使用过CTE方法)
  骗局:不知何故,这是一种高度克服的方法

考虑到这些方法,或者您可能拥有的其他方法,是否有一种更容易维护,更好地扩展?

小数据样本 - 源数据中有80多列(我无法控制)和更多行:http://rextester.com/live/AYQUT28070

0 个答案:

没有答案