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

时间:2013-01-22 15:57:43

标签: sql-server sql-server-2008 ssas olap ssas-2008

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

多维数据集中的数据少于事实表:在所有角色扮演日期维度中具有相应成员的事实仅被视为。

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

因此,他应该包含的事实不到百分之一。很多天的数据都不见了。

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

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

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

最后那就是查询(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

但这显然不是多维数据集中的数据(Q2)SSAS显示。不幸的是,SSAS显示了Q1 Test-query返回的数据。 所以Q1只是数据的一小部分。在每个日期维度(日期1,日期2,日期3)中具有相应成员的事实仅被视为。

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

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

干杯 帕特里克

1 个答案:

答案 0 :(得分:0)

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

对我来说问题是我为日期范围设置了SSAS分区。例如,我有一个用于"低于2012"," 2012"," 2013"和"大于2013"对于日期字段。我忽略的是一些奇怪的实例,其中日期值为空。具有空日期的那些记录没有出现在多维数据集中,但显然出现在事实表中。我为&#34添加了一个分区; date为null"并重新加工。累积奖金!

相关问题