1

关系数据仓库 / SSAS 2008 R2 / SQl Server 2008 R2

多维数据集中的数据比事实表中的数据少:仅考虑所有角色扮演日期维度中具有相应成员的事实。

我意识到“立方体”中的数据比事实表中的数据少。事实表的“行项目”的SELECT Count(*) FROM [FactSales]计数与多维数据集中的“行项目计数”度量不对应。

因此,他应该包含的事实不到百分之一。许多天的数据丢失了。

所以我做了一些研究。我首先排除了最可能的原因(例如,检查不是“全部”成员的默认成员,检查处理选项,...)。在我提出问题之前,首先要了解模型和事实表的详细信息。

关系数据仓库遵循 Fact 表保存销售数据的星型模式。它有几个指向一个日期维度的外键。此日期维度在 SSAS 中由多个角色扮演维度表示。所有这些 FK 都不是 NULL。日期维度有一个未知成员(在基础表中)。因此,日期维度键 (Int) 的空处理设置为“错误”。Dimension Usage 设置正确(Null-Processing: E​​rror)。

所以我检查的最后一件事是:我能否提出基于我的事实表及其维度的查询,该查询返回与我在多维数据集中获得的相同行项计数。

所以最后是查询(Q1):

SELECT COUNT(*) --cut-set
FROM Fact AS F 
INNER JOIN DimDate 
    ON F.Date1Key = Date.DateKey 
    AND F.Date2Key = Date.DateKey
    AND F.Date3Key = Date.DateKey

当然这是错误的。应该是这样的(Q2):

SELECT COUNT(*) --complete Set
FROM FactSales AS F 
INNER JOIN DimDate AS DimDate1 
    ON F.Date1Key = DimDate1.DateKey
INNER JOIN DimDate AS DimDate2
    ON F.Date2Key = DimDate2.DateKey
INNER JOIN DimDate AS DimDate3
    ON F.Date3Key = DimDate3.DateKey

但这显然不是 Cube 中显示的 Data (Q2) SSAS。不幸的是,SSAS 显示了 Q1 测试查询返回的数据。所以 Q1 只是数据的一小部分。仅考虑在每个日期维度(Date1、Date2、Date3)中具有相应成员的事实。

我不知道为什么会这样。这是非常基础的,所以基本上它应该在 SSAS 中解决。除此之外,它在同一数据仓库解决方案的先前版本中运行良好(已经有角色扮演的日期维度)。

我猜这是一些错误的配置(无论是什么属性)。有人有想法吗?

干杯帕特里克

4

1 回答 1

0

是一篇很好的文章,解释了一些原因,但对我来说都不是。

对我来说,问题是我为日期范围设置了 SSAS 分区。例如,我有一个用于日期字段的“小于 2012”、“2012”、“2013”​​和“大于 2013”​​。我忽略了一些日期值为空的奇怪实例。那些日期为空的记录没有出现在多维数据集中,但显然出现在事实表中。我为“日期为空”添加了一个分区并重新处理。大奖!

于 2015-10-20T18:33:11.953 回答