使用SQL Server加载事实表

时间:2012-04-07 08:31:54

标签: sql-server data-warehouse fact-table

我正在使用SQL Server 2008和Analysis Services创建一个仓库。我已经设法创建并填充维度表,但是我在编写用于加载事实表的SQL时遇到了很多麻烦。首先,我不确定如何使用维度表中的PK加载事实表的键。我尝试编写一个包含一系列JOIN的查询来获取我想要的密钥和度量,但是语句变得如此复杂以至于我迷失了。

这是我必须处理的星型模式:

http://i.imgur.com/C3DGj.png

我做错了什么?我有一种感觉,我错过了一些非常基本的东西,但我对此很新,我在网上发现的大部分信息似乎都是使用SSIS处理的,我没有安装。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

今天的数据仓库开发人员使用SSIS来加载维模型。通常,查找用于将维度属性转换为键。大多数情况下,数据将在另一台服务器或平面文件或其他强制您使用SSIS等ETL工具的内容上,但在您的情况下,您可以在没有的情况下完成。如果您的企业对BI很认真,那么您应该推动安装SSIS并进行学习。

根据您的情况,假设您在本地加载了原始事实的表,您应该能够进行插入/选择。

基本上,你需要内部连接(因为你没有填充维度表的问题)每个维度到原始事实表。就像是:

INSERT trainingcentrefact
(timekey,locationkey,instructorkey,coursekey,paid,notpaid,... etc)
SELECT
   t.timekey
  ,l.locationkey
  ,i.instructorkey
  ,c.coursekey
  ,rf.paid
  ,rf.notpaid
  ,... etc
FROM rawfacts rf
INNER JOIN timedimension t ON rf.time = t.time
INNER JOIN locationdimension l on rf.location = l.location
INNER JOIN instructordimension i on rf.instructor = i.instructor
INNER JOIN coursedimension c on rf.course = c.course