Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 我如何找到“数据仓库”的哪些记录必须根据CDC捕获的更改进行更新?_Ssis_Sql Server 2012_Etl_Data Warehouse - Fatal编程技术网

Ssis 我如何找到“数据仓库”的哪些记录必须根据CDC捕获的更改进行更新?

Ssis 我如何找到“数据仓库”的哪些记录必须根据CDC捕获的更改进行更新?,ssis,sql-server-2012,etl,data-warehouse,Ssis,Sql Server 2012,Etl,Data Warehouse,我对OLTP数据库使用sqlserver2012,并在sqlserver2012中创建了一个数据仓库 我设计了Facts和Dimensions内部数据仓库,并提供了多个视图 我的一些事实表是通过连接视图中的几个表而形成的 我使用CDC(更改数据捕获)来获得任何OLTP更改的通知,并将这些更改保存在后台数据库中,最后我必须根据上述保存的更改更新数据仓库 问题是我如何检测数据仓库中的哪些记录必须根据CDC保存的更改进行更新 有关详细说明: 我的datawarehouse中有SalesFact,它有一

我对
OLTP
数据库使用
sqlserver2012
,并在
sqlserver2012
中创建了一个数据仓库

我设计了
Facts
Dimensions
内部
数据仓库
,并提供了多个视图

我的一些事实表是通过连接视图中的几个表而形成的

我使用
CDC
(更改数据捕获)来获得任何
OLTP
更改的通知,并将这些更改保存在
后台数据库中,最后我必须根据上述保存的更改更新数据仓库

问题是我如何检测数据仓库中的哪些记录必须根据CDC保存的更改进行更新

有关详细说明:

我的
datawarehouse
中有
SalesFact
,它有一个
视图
如下

Select 
 Sum(T1.X),
 Sum(T2.Y),
 Sum(T3.Z),
 Sum(T4.W)
From T1
  Left join T2 On (....)
  Left join T3 On (....)
  Left join T4 On (....)
Group By T1.X,T2.Y,T3.Z,T4.W
另外,我还有4个
CDC表
将OLTP更改保存为:

Create Table T1Change()

Create Table T2Change()

Create Table T3Change()

Create Table T4Change()

那么,我如何才能找到数据仓库的哪些记录必须根据这些更改进行更新呢?

我现在从您的进一步评论中了解到,您的键是由更改的列组成的,您没有持久键。我看不出在这种情况下如何确定“变化”


我会放弃整个CDC设计,每次截断并完全刷新目标表。

这可能只是语法错误,但如何定义“大多数更改”?T1-4中记录最多?@MikeHoney:我改变了语法。现在我无法理解你所说的SalesFact视图。为什么在同一选择中有Sum和Group By?事实键在哪里?事实表没有Pk。但是我们可以认为FK的组合是FK在我的事实中(1,x,t2.y,t3.z,t4.w)。但这对我的问题没有任何不同。当OLTP中的一个或多个表中的一个或多个记录被选中时,我如何才能找到必须更改(更新/删除或插入)的记录?我的意思是,您的设计中缺少持久密钥,因此无法进行更新。您是否可以给我一个链接,了解设计数据仓库的最佳实践和更新过程?我猜您指的是数据仓库?IMO的最佳来源是金宝集团——优秀的书籍、培训、文章和论坛。