轉載: 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中的數據不會丟失。方法