关系数据仓库 / SSAS 2008 R2 / SQl Server 2008 R2
多维数据集中的数据比事实表中的数据少:仅考虑所有角色扮演日期维度中具有相应成员的事实。
我意识到“立方体”中的数据比事实表中的数据少。事实表的“行项目”的SELECT Count(*) FROM [FactSales]
计数与多维数据集中的“行项目计数”度量不对应。
因此,他应该包含的事实不到百分之一。许多天的数据丢失了。
所以我做了一些研究。我首先排除了最可能的原因(例如,检查不是“全部”成员的默认成员,检查处理选项,...)。在我提出问题之前,首先要了解模型和事实表的详细信息。
关系数据仓库遵循 Fact 表保存销售数据的星型模式。它有几个指向一个日期维度的外键。此日期维度在 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
但这显然不是 Cube 中显示的 Data (Q2) SSAS。不幸的是,SSAS 显示了 Q1 测试查询返回的数据。所以 Q1 只是数据的一小部分。仅考虑在每个日期维度(Date1、Date2、Date3)中具有相应成员的事实。
我不知道为什么会这样。这是非常基础的,所以基本上它应该在 SSAS 中解决。除此之外,它在同一数据仓库解决方案的先前版本中运行良好(已经有角色扮演的日期维度)。
我猜这是一些错误的配置(无论是什么属性)。有人有想法吗?
干杯帕特里克