向数据仓库添加新维度(向事实表添加新列)

我正在建立一个OLAP数据库,并遇到一些困难。 我已经设置了一个事实表,其中包括销售数据列,如数量,销售额,成本,利润等。我现在的维度是日期,地点和产品。 这意味着我也拥有包含在事实表中的这些维度表的外键列。 我用这些数据加载了事实表。

我现在正在尝试为销售人员添加维度。 我创建了维度,其中包含销售人员的ID以及他们的名称和位置。 但是,我无法编辑事实表以添加将充当销售人员维度的外键的新列。

我想使用SSIS来做到这一点,通过查找事实表所基于的销售数据库和销售人员ID,但我首先需要将Salesperson列添加到我的事实表中。 当我尝试这样做时,出现错误,说它无法创建新列,因为它将填充NULL。


我会猜测你遇到的问题,但这只是一个猜测:你的问题有点难以理解。

我将假设您已创建包含x列的事实表,其中包括日期,位置和产品维度的链接。 然后你用数据加载了该事实表。

您现在正试图向该表添加一个新列SalesPerson_SK(或ID)。 你不希望在数据库中允许NULL值,所以你清除'allow NULL'复选框。 但是,当您尝试保存您的工作时,该表错误与异议无法将NULL插入到SalesPerson_SK列中。

有一些方法可以解决这个限制。 其中一个,如果您仍处于开发阶段,可能是最好的,那就是发出以下命令:

TRUNCATE TABLE dbo.FactMyFact

这将删除表中的所有数据,允许您进行更改并重新加载包含新列的表。

如果出于某种原因,你不能这样做,你可以改变表格添加列,但包括一个默认约束,它会将一个默认值放入事实表中,本质上是一个虚拟记录,它说:“我不知道是什么这是”

ALTER TABLE FactMyFact
ADD Salesperson_SK INT NOT NULL 
CONSTRAINT DF_FactMyFact_SalesPersonSK DEFAULT 0

如果您不希望将默认值放入表中,只需通过选中设计页面上的框或发出以下命令即可创建列并允许NULL值:

ALTER TABLE FactMyFact
ADD Salesperson_SK INT NULL 

这个答案是基于我认为你的问题给出的:让我知道它是否有帮助。


使用事实表维度内部联接,从维度获取值并插入事实中...

否则创造事实较少的事实方式

链接地址: http://www.djcxy.com/p/24723.html

上一篇: Adding new dimensions to data warehouse (adding new columns to fact table)

下一篇: Having trouble setting a computed column as not Null