转载: http://www.cnblogs.com/OpenCoder/p/4754447.html#commentformhtml
在SSAS中事实表数据被归类到为UnknownMember 的时候分为两种状况:orm
第一种状况,在SSAS里面事实表中的外键是null,这种状况SSAS在建事实表和维度时ErrorConfiguration的默认设置就能够处理,默认状况下事实表中外键为null的数据都会被归类到UnknownMember,只要将维度属性上的UnknownMember设置为Visible,在MDX查询结果中就会显示这些被归类为UnknownMember的数据。htm
第二种状况,在SSAS里面事实表的外键不为null可是外键值在维度表中找不到,这种状况SSAS在建事实表和维度时ErrorConfiguration的默认设置也会把事实数据归类到UnknownMember里面去,可是在处理CUBE时会报错。blog
有两个方法能够解决报错的问题。开发
一、打开外键值在维度表中找不到的那张事实表所创建的度量值组,打开其属性设置,将ErrorConfiguration下的KeyNotFound设置为IgnoreError,那么在处理CUBE时就不会报错了,而且外键值没法在维度表找到的事实数据会被归类为UnknownMember(一样须要将维度属性上的UnknownMember设置为Visible,在MDX查询结果中才会显示这些被归类为UnknownMember的数据)。get
二、打开外键值在维度表中找不到的那张事实表所创建的度量值组,打开其属性设置,设置度量值组的ErrorConfiguration为默认(default)。而后打开CUBE属性设置,在CUBE的属性设置里面将ErrorConfiguration下的KeyNotFound设置为IgnoreError,那么在处理CUBE时也不会报错了,而且外键值没法在维度表找到的事实数据会被归类为UnknownMember(一样须要将维度属性上的UnknownMember设置为Visible,在MDX查询结果中才会显示这些被归类为UnknownMember的数据)。io
注意CUBE和维度的ErrorConfiguration设置中不少项的名字相同可是表明的含义不同,好比选项KeyNotFound在维度属性中表示维度中字段的KeyColumns值找不到该怎么处理(详情查看这篇文章),而KeyNotFound在CUBE属性中表示的是事实表外键值在维度表中找不到该怎么处理。form
请注意当维度属性上UnknownMember的值为Visible或Hidden的时候,维度的UnknownMember是打开了的,只是说在设置UnknownMember为Hidden时MDX的查询结果不显示维度的UnknownMember成员,可是CUBE在作处理的时候是计算了维度上UnknownMember的度量值的。可是当设置维度属性的UnknownMember为None时,维度的UnknownMember就会被关掉,CUBE在作处理时会直接将事实表中外键为null或外键值在维度表中找不到的数据行忽略掉,致使CUBE中事实表最后聚合出来的度量值数据丢失。因此当CUBE属性中ErrorConfiguration下的KeyNotFound设置为IgnoreError时,维度属性再把UnknownMember的值设置为None,那么CUBE在处理时就会丢失数据并且也不会报错,这会致使MDX查询出来的度量值数据会莫名其妙的少掉不少,并且开发人员也不容易察觉到是什么形成的,因此按照经验来看在最开始建维度的时候将维度的UnknownMember值设置为Visible是最好的,这样既保证了CUBE在处理数据时的容错率,又保证了CUBE中的数据不会丢失。方法