SSAS 维度层次结构:处理时发现重复的属性键

Posted

技术标签:

【中文标题】SSAS 维度层次结构:处理时发现重复的属性键【英文标题】:SSAS dimensions hierarchies: A duplicate attribute key has been found when processing 【发布时间】:2012-11-06 03:02:40 【问题描述】:

我对 SSAS 完全陌生,我正在尝试部署一个简单的多维数据集,其中只有一个维度由多个属性组成。我已经做的是从我的数据源创建一个 DSV,然后从我的事实表创建一个维度。似乎无论发生什么,我都会收到以下错误消息:

Errors in the OLAP storage engine: A duplicate attribute key has been found when processing: Table: 'dbo_Fact_Statistics', Column: 'Team', value: 'ANA'. The attribute is 'Team'.

这是我的层次结构:Id (SK) -> Player id -> Team -> Player Name -> Salary

我不明白,显然问题不在于该值为null,就像我在其他线程中看到的那样,告诉我将KeyColumns下的NullProcessing设置为自动以外的其他值,但这不是在这种情况下的问题。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您可能在多个球员姓名和/或薪水值下列出了 ANA 团队。

这是 SSAS 的一个非常棘手的领域。最快的方法可能是安装 BIDS Helper 并使用“维度健康检查”功能:

http://bidshelper.codeplex.com/wikipage?title=Dimension%20Health%20Check&referringTitle=Documentation

它将向您显示数据中的所有问题(不仅仅是您迄今为止发现的第一个问题),并为您提供一些有关如何继续的信息。

由于调试和修复这些问题的困难,我个人已经不再建立属性关系。我现在倾向于构建每个属性都与关键属性直接相关的维度。您永远不会看到这些错误,并且性能似乎非常相似。您仍然可以向用户呈现层次结构。

如果这不是您的选择,那么您可以尝试将较高级别属性的列添加到所有较低级别的 Key 属性中。从技术上讲,这可行,但设置和维护起来很尴尬。

【讨论】:

我已经安装了 BIDS Helper 并对我的维度进行了健康检查。原来问题是:Attribute relationship [Team] -> [Name] is not valid because it results in a many-to-many relationship. 啊,你这个大美女!对我来说也完全找到了一种所谓的不可能的多对多关系! @bartover - 我更大的多维数据集并非微不足道 - 磁盘上有 110GB,最大维度有 180 万行(没有多级属性关系),100 多个度量,大多数使用 LastChild 聚合(超过 250 + 历史天数),2,000 行 MDX 脚本。返回包含该维度 6 个级别的 1,000 个单元格的 Excel 数据透视表的响应时间为 1-2 秒。 当我开始使用 SSAS 时,我也阅读了同样的建议 - 我的现场经验是,它实际上对性能并不是很重要。我已经为具有相似结果的各种客户构建了几个具有相似复杂性的多维数据集。聚合设计对查询性能的影响似乎要高出 100 倍。 我基本上有同样的问题。如果我想“正确”解决它,是否需要创建一个新字段“团队 - 玩家”来统一值并将其作为团队属性的键?【参考方案2】:

这种方法解决了我的问题:

我没有让属性遵循链式关系,而是让关系保持默认状态。

Player id (SK) -> Conference
Player id (SK) -> Division  
Player id (SK) -> Team 
Player id (SK) -> Player Name 
Player id (SK) -> Salary

【讨论】:

谢谢你真的为我节省了很多时间【参考方案3】:

在 sql 中运行它找到你的重复项,例如 ID...用它作为我的维度键

Select id,count(*) as how_many
from [RC_Dailer_WH].[dbo].[RC_call_logs]
group by id
having count(*) > 1

(受影响的 3647 行)我的数据库中有超过 50k 条记录

删除重复项然后我的多维数据集正确处理

【讨论】:

【参考方案4】:

选择显示错误的维度。 并右键单击 去查看代码

并在该代码中搜索以下行:

报告并停止

删除那个 XML 标签 并保存

然后重新处理它会起作用

【讨论】:

【参考方案5】:

转到显示错误的维度。并右键单击 - 去查看代码 -

CTRL+F - 搜索连接 - 查找 报告并停止 连接字符串。 从代码中删除上述命令 - 并保存。 再次处理。

它会起作用的。

【讨论】:

以上是关于SSAS 维度层次结构:处理时发现重复的属性键的主要内容,如果未能解决你的问题,请参考以下文章

SSAS优化要点-转载

SSAS 2012 - 维度建模

属性值重复时 SSAS 处理失败(实际上没问题)

SSAS - 日期维度将错误的日期与层次结构联系起来

SQL Server 分析服务在维度字符串属性中传递空值和空白值

SSAS 浏览器窗口中的维度属性