参考完整性错误与多维数据集的维度处理

时间:2013-07-22 11:02:49

标签: sql sql-server-2008-r2 ssas cube cube-dimension

我们的某个生产多维数据集失败,并显示以下错误消息:

  

来源:Analysis Services执行DDL任务分析服务执行   DDL任务描述:OLAP存储引擎中的错误:   表处理时无法找到属性键:表:   'dbo_vw_FACT_OperationalTimeSheetData',列:'CurrentHomeLaborOrg',   价值:'117-MARKETPLACE-38'。属性是'KeyOrganisation'。结束   警告警告:2013-07-22 06:26:07.51代码:0x811F0002
  来源:Analysis Services执行DDL任务分析服务执行   DDL任务描述:OLAP存储引擎中的错误:   属性键因为属性而转换为未知成员   找不到钥匙。属性KeyOnganisation of Dimension:Current   来自数据库的家庭组织:LadbrokesReporting2005,Cube:MIS   克隆,测量组:Kronos时间表,分区:201307,记录:   179774.结束警告

在广泛的谷歌搜索上面的错误消息我得知这是由于参照完整性,即事实表中的某些行无法链接到维度表。在我之前的分析中,我认为对于某些值,如上面在事实表中的错误消息'117-MARKETPLACE-38'中给出的值,维度表中的格式为'117_Marketplace_38'。但是,我发现了一些引人注目的事实: -

  1. 填充事实的视图的查询以“117-MARKETPLACE-38”格式转换数据。源表中数据的格式为'117_Marketplace_38'。

  2. “117-Marketplace-38”格式还有许多其他条目。但是,该错误似乎只出现在该条目中。那么为什么其他人会被接受,但这不是吗?

  3. 我已经没想完了。因此,如果有人能帮助我解决这个问题会很棒。

2 个答案:

答案 0 :(得分:3)

您确定要处理维度吗?请记住,因为它将事实链接到维度,它在SSAS维度上执行,而不是基础SQL表。尝试首先在维度上运行流程(更新)?

在您的原始帖子中,您将混合使用大写和小写,MARKETPLACE和Marketplace。它是如何在源头?可能是因为它没有将它们视为相同。我见过SSAS有“Id”与“ID”的问题

ssas attribute key cannot be found even though it exists and is not due to duplicates

的可能相对值

接受后编辑评论回答。

答案 1 :(得分:0)

我收到了同样的错误消息,但在我的情况下必须以不同的方式处理它:下面的详细信息针对遇到同一问题的其他人。

在我的场景中,我通过桥接表将我的事实表连接到另一个事实表。这个桥表是通过INNER JOIN形成的,所以它只有两个匹配的记录;合法地,FactTableA中的某些行不在BrgTable加入FactTableB

即使没有FactTableA的有效链接,也允许BrgTable处理,我跟踪了these instructions from TechNet

  

事实表中的参照完整性问题

     

销售事实表包含不存在product_id的记录   在产品维度表中。服务器将生成KeyNotFound   分区处理期间出错。默认情况下,KeyNotFound错误是   记录并计入关键错误限制,即0   默认。因此,处理将在第一次错误时失败。

     

解决方案是修改度量值组的ErrorConfiguration   或分区。以下是两种选择:

 Set KeyNotFound=IgnoreError.

 Set KeyErrorLimit to a sufficiently large number.
     

KeyNotFound错误的默认处理是分配事实   记录到未知成员。另一种选择是设定   KeyErrorAction = DiscardRecord,丢弃事实表记录   共

对我来说,我必须转到与失败的度量值组相关联的分区,打开属性窗格,将 ErrorConfiguration 设置为Custom,然后然后展开Custom并将KeyNotFound设置为 IgnoreError