基于链接到维度表之一的事实表中的键添加新维度

Posted

技术标签:

【中文标题】基于链接到维度表之一的事实表中的键添加新维度【英文标题】:Adding a new dimension based on a key in fact table linked to one of the dimension tables 【发布时间】:2009-04-01 09:27:10 【问题描述】:

我有一个事实表,其中包含所有日期和时间属性作为链接到实际日期和时间维度的键。 当我使用 SSAS 2005 在其上创建多维数据集时,这些日期时间属性被拆分为多维数据集的各个维度,这没问题。

问题是当我向事实表添加新的日期时间属性时,我的多维数据集不接受该属性,并且不会像其他的那样创建新的日期时间维度,除非我从头开始重新创建多维数据集。

谁能建议一下,我怎样才能将这个新属性单独添加为维度,而不必重新创建多维数据集?

【问题讨论】:

为什么事实表会保存日期时间信息?听起来它需要重新设计。日期时间数据本质上是多维数据。 【参考方案1】:

我很难理解您的问题。

听起来好像您正在尝试向事实表添加一个新的日期时间列(事实)(引用您的适当 Dimension/s 属性)。如果是这样,这会改变多维数据集的结构,因此需要重新处理多维数据集。

为了限定术语的正确使用,维度包含属性。事实表包含事实而不是属性。

以下参考资料可能有用。

http://msdn.microsoft.com/en-us/library/aa905984(SQL.80).aspx

回复:评论

在处理多维数据集之前,需要在 Business Intelligence Development Studio (BIDS) 的数据源视图 (DSV) 中应用/注册任何结构更改。单击 DSV 上的刷新按钮,应该会提示您选择将任何发现的更改应用于您的表。此外,如果您对维度的基础表进行任何添加/修改,那么您可能还需要在重新处理多维数据集之前将相关属性添加到适当的维度 .dim 文件中。

希望这是有道理的。

【讨论】:

好吧,我想我用错了术语,但这是实际问题。添加一个新的日期时间列(事实),刷新数据源视图,这不会在多维数据集中本身带来适当的维度(继承日期时间维度属性)。我希望这次有意义。知道为什么吗? 重新处理多维数据集没有帮助,因为它没有对多维数据集进行这种新的结构更改。甚至在处理多维数据集时尝试了 Process Structural Chages 选项。【参考方案2】:

问题通常是由于未知成员和空处理选项设置以及雪花模式(如果您的多维数据集中有雪花模式)引起的。我弄清楚问题实际上是什么。 如果您有提到的案例,那么当您刷新数据源视图时,SSAS 不会自行提出结构更改。在我的例子中,因为它是日期和时间维度,我必须手动添加新维度(多维数据集维度)并正确设置它们的 NULL 处理选项(在我的例子中是 UnknownMember 而不是自动)。

由于对添加到基础事实表的所有此类新列进行这些更改可能有点困难,因此您可以尝试使用精心设计的 Find & Replace 方法更新 XMLA 脚本。

【讨论】:

以上是关于基于链接到维度表之一的事实表中的键添加新维度的主要内容,如果未能解决你的问题,请参考以下文章

使用触发器链接到数据仓库中事实表中的时间维度是个好主意吗?

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

星型模式 - 事实表中的属性

从维度表设置事实表中的 ID

数据仓库中的低基数维度

为啥事实表中的维度成员集通常用作复合键?