关系数据仓库/ 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中解决。除此之外,它在同一个数据仓库解决方案的先前版本中运行良好(已经有角色扮演日期维度)。
我猜这是一些错误的配置(无论属性)。 有人有想法吗?
干杯 帕特里克
答案 0 :(得分:0)
Here是一篇很好的文章,解释了一些原因,但对我来说都不是这样。
对我来说问题是我为日期范围设置了SSAS分区。例如,我有一个用于"低于2012"," 2012"," 2013"和"大于2013"对于日期字段。我忽略的是一些奇怪的实例,其中日期值为空。具有空日期的那些记录没有出现在多维数据集中,但显然出现在事实表中。我为&#34添加了一个分区; date为null"并重新加工。累积奖金!