Ssas &引用;重复属性键“;属性不是键时出错
处理维度时,我遇到以下错误: OLAP存储引擎中的错误:已创建重复的属性键 处理时找到:表:“dbo_订单”,列:“项目”,值: “客户服务人员”。属性为“Project” “项目”是“订单”维度的属性,但不是键。我没有指出项目栏是关键!我应该能够根据需要有尽可能多的副本,就像名字字段一样 我是AnalysisServices项目的新手,我真的需要克服这样一个事实,即SSAS经常抱怨重复值,而拥有重复值应该是完全可以的。我相信这一定是我忽略的简单的事情 编辑:我意识到可以设置Ssas &引用;重复属性键“;属性不是键时出错,ssas,Ssas,处理维度时,我遇到以下错误: OLAP存储引擎中的错误:已创建重复的属性键 处理时找到:表:“dbo_订单”,列:“项目”,值: “客户服务人员”。属性为“Project” “项目”是“订单”维度的属性,但不是键。我没有指出项目栏是关键!我应该能够根据需要有尽可能多的副本,就像名字字段一样 我是AnalysisServices项目的新手,我真的需要克服这样一个事实,即SSAS经常抱怨重复值,而拥有重复值应该是完全可以的。我相信这一定是我忽略的简单的事情 编辑:我意识到可以设置keydeplica
keydeplicate=ReportAndContinue/ReportAndStop
,也可以设置KeyColumns
和namecoumns
。但是这个多步骤的过程似乎非常麻烦,因为这似乎是一个非常正常的操作,比如添加Address1、Address2、Address3、Firstname、Zipcode和其他通常重复的字段。我不敢相信这个繁琐的过程需要应用到所有这些领域
提前感谢。这通常是源表/视图中同时包含空格和null的结果 本质上,SSAS对每个属性都这样做 从源中选择不同的合并(属性“”) 默认情况下,AnalysisServices会将空值转换为空值,从而在生成的提要中产生重复的值空值,从而导致错误 我同意这很糟糕,对新球员来说是一个很大的痛苦
解决方案:从数据源中删除所有空值,例如使用ISNULL/COALESCE everywhere,或使用where子句过滤包含空值的行,或在处理多维数据集之前运行update语句以值替换所有空值,等等。我今天遇到了类似的问题(相同的错误消息),为了让其他人也遇到同样的问题,我在我的维基上做了一些注释: 我的案例是SQL(经过简化和改写以保护无辜): 奇怪的是,有些情况下发生了dim_attribute1_name而不是dim_attribute2_name的错误。然而,在这种特殊情况下,属性是完全相同的。最终,解决方案是将SQL更改为:
SELECT dim_id,
dim_name,
dim_attribute1.id,
dim_attribute1.name,
dim_attribute2.id,
dim_attribute2.name
FROM dim_table
INNER JOIN dim_attribute1 ON dim.attribute1_id = dim_attribute1.id
INNER JOIN dim_attribute2 ON dim.attribute2_id = dim_attribute2.id
然后在维度中(在列表中隐藏id)使用属性键的id值和属性名称的名称。我以前没见过这种情况,但出于某种原因,它发生在这里。我认为,这种解决方案比将多维数据集设置为忽略重复键错误进行处理要好
我认为,如果要构建一个维度连接表,这将提供更好的性能/可靠性。但请不要引用我的话。虽然我在本页上的其他解决方案可行(并且根据情况可能更理想),但这是另一种解决方案: 以下是我的部分错误的模型:
Column: 'attribute1_name', Value: 'Search String'
我快速搜索了:
SELECT dim_id,
dim_name,
dim_attribute1.id,
dim_attribute1.name,
dim_attribute2.id,
dim_attribute2.name
FROM dim_table
INNER JOIN dim_attribute1 ON dim.attribute1_id = dim_attribute1.id
INNER JOIN dim_attribute2 ON dim.attribute2_id = dim_attribute2.id
WHERE UPPER(dim_attribute1.name) = UPPER('Search String')
事实证明,dim_attribute1.name有两个不同的条目与此匹配:
Key Columns → Column Name → Source → Collation
包括“区分大小写”
其他类似的问题可能是空白字符和文本中其他不易察觉的细微变化 我也遇到了同样的问题,我找到了解决办法 右键单击“多维数据集”=>“处理”=>“更改设置”=>“维度键错误” 活动“用户自定义错误配置” 为此四个下拉列表设置“忽略错误” “找不到密钥” “重复密钥” “空密钥已转换为未知” “不允许使用空密钥”
键的问题将被忽略。右键单击属性并选择“属性”。查找“属性”窗口中“源”类别下的“KeyColumn”。编辑“KeyColumn”属性,它将显示一个用户友好的窗口 从窗口的右侧(键列)删除属性,并将其替换为左侧(可用列)的实际id列 然后编辑“NameColumn”属性,将出现相同的窗口。将属性列(要显示的实际数据)从左侧移到右侧
在VS 2010 Shell SSDT中测试。我通过在关系数据库上指定我的视图的排序规则来解决问题,如下所示
合并([Descriptionão da Transação],'')如果您的数据同时包含Null和''SSA'发出重复的属性键,则整理Latin1_General_CIçu AI,因为它认为Null为'。您不必触摸数据来修复此问题。您可以转到数据源视图,使用表达式COALESCE(mycolumn“”)添加命名计算,然后在维度中使用该计算,而不是原始列。这将解决数据源视图级别的问题,维度将正常处理。请阅读此博客:。请看原因1的详细解释。这将解释为什么会发生这种情况 谢谢各位
Ned如果您仍想继续部署和多维数据集浏览,请让我为您提供一个解决方案。 在“process cube”窗口下,将维度键错误设置更改为自定义。 您将能够无缝地部署和浏览多维数据集。
这里的权衡是,您可能无法获得预期的结果 有一段时间,需要在keyColumns中使用复合键来解析重复的属性键我今天遇到了这种情况,一时摸不着头脑,因为这里的解决方案都不起作用。最终解决了这个问题,我想我应该为其他人添加我的解决方案,谷歌搜索这个错误,然后像我一样到达这里 在我的情况下是这样的
Key Columns → Column Name → Source → Collation
REPLACE(REPLACE(ISNULL([AttributeColumn], ''), CHAR(13), ''), CHAR(10), '')