2015-10-19 137 views
-1

我不是一位经验丰富的BI开发人员,所以我需要帮助填充我的事实表。首先,我使用适当的SSIS组件填充了我的生产数据库中的所有维度(我没有使用临时数据库或表)。如何填充我的事实表?

DimParentDimStudentDimManager,和DimFacilitator使用自然键作为主键。其余维度使用代理键作为主键。使用自然键的原因是因为我的生产(OLTP)数据库具有相同的数据库模型,可以在多个不同的模式(充当我不同的校园位置)上使用。 DW Diagram

我的可测量数据仍然在我的生产数据库中,我似乎无法弄清楚如何填充我的事实表。 Production OLTP

我想用一个大的查询用的加入,但它可能会太复杂我就通过使用查询填充我DimAssessmentType方式:

select PK_Assessment, [Description] 
from Auckland_Park.Assessment 
union 
select 3, 'International' 
+0

我不明白....你需要帮忙写一个插入语句或什么? –

+0

而且? 你有什么尝试? 你卡在哪里? 你需要什么帮助? – Ragul

+0

我想填充我的事实表。我已经尝试了一个带有连接的大选择语句,但正如我所提到的,我认为它不会起作用。可以吗?会这么简单吗? – Jnr

回答

2

不要不一致。使用代理键的一切。然后,无论发生什么情况(即校园上线不遵循此规则),您都可以对其进行解释。不一致只是为自己工作。现在就做设计吧。在你事实上有三年数据之后,重新加载一个维度和事实是一件很糟糕的事情。

无论如何。我填写事实的方式是:

  1. 将事实加载到临时表中。
  2. 临时表中有包含你的代理键
  3. 运行,在代理键填充
  4. 在你其实选择一个合适的窗口上的临时表的更新语句附加列。删除并重新加载该窗口

这听起来像你可能想在SSIS中进行“内联查找”,而不是找到SK的。这很好,但确实很难排除故障。此外,SSIS查找组件不能很好地扩展(即,对于少数行工作,对于许多行非常缓慢)。而且它也没有做好SCD。

您的陈述“我似乎无法弄清......”的含义很模糊。按照上面的四个步骤告诉我你无法弄清楚哪一个。

一个问题可能是您不能保留暗淡的源系统密钥......所以您无法根据源系统密钥查找新的代理密钥。

+0

谢谢,我会努力工作并回到你身边。 – Jnr

+0

我在读博客[这里](http://sqlblog.com/blogs/jorg_klein/archive/2008/10/22/ssis-decrease-your-fact-table-loading-time-up-to-40.aspx ),其中指出您的业务/自然密钥应该是链接到事实表外键的主键。正如你所说“你应该使用代理键的一切”。这意味着我应该在我的Dimensions表中使用_Identity_列(代理键)和_primary key_列(业务键),然后将主键链接到事实表的外键。 – Jnr

+1

您的尺寸中有两个键。你确保它们都是唯一的(通过约束)。那个博客说_存储DWH事实表中的事实记录和dimension_的增益代理键。所以它表示在阶段性来源交易和维度上的_business keys_上匹配,并推导出您的替代关键字,并且_that_ SK会落在您的事实中。我们说的是同样的事情。看到我的最后一条评论:“你没有在你的维度中保留源系统密钥(业务密钥)”。您需要在维度中存储这两种类型的密钥,但在您的事实中只能存储_only_代理键。 –