[原創]SSAS-引用維度與多數據源、多數據源視圖引發分區錯誤

背景:

      最近有個項目,有32家分公司,集團總部需要取這個32家分公司數據做分析,由於每個分公司的數據都比較龐大,所以最終方案是每個分公司一個DW,在cube搭建過程中將每個公司數據作爲一個分區數據的來源,這樣子即可分區又易於維護每個分公司的數據,而且還不會容易引發一個DW而數據爆炸、效率等問題。

問題:

      在創建cube時候,由於先前搭建先用一個分公司搭建了一個模型,所以後面想着將其它的分公司事實表添加到這個數據源視圖裏面即可,於是興奮的創建了好多數據源,然後在原有的數據源視圖裏面添加了其它分公司的事實表,也添加修改了分區等內容,十分順利,後面處理也是成功。

      但是後面,因爲店鋪和經銷商兩個維度剛開始是分開2個單獨維度,但後面需要分析各經銷商經營情況,所以必須將經銷商和店鋪連接起來,於是就做了經銷商和店鋪之間的引用關係,cube於是就創建了銷售度量值維度和經銷商維度通過店鋪的引用維度關係,但是再次處理,就處理失敗,總是報錯:數據源視圖未包含“dbo_Dim_Store”表或視圖的定義

      1

測試:

      測試一:

            猜想是否是數據源視圖引發的,於是刪除了剛纔的引用關係,建立普通的關係,分區也沒有改變任何設置,重新處理通過

     

      測試二:

            看到錯誤提示,想來想去還是覺得是分區的問題,於是查看了錯誤時候報錯的分區,查看其創建分區時候使用的查詢SQL,發現一個

      重大問題:創建了引用維度的度量值組,查詢的SQL回去關聯相應的維度表查詢,就如我們平時寫JOIN查詢一樣,那在我們後面添加的

      的其它公司的數據源視圖裏面並沒有這兩個需要建立引用關係的維度表,只有事實表,所以在查詢時候就導致了這個找不到xxx表的原因

      呢?於是將這兩個引用的維度表也添加到了對應數據源視圖中,再處理,就可以了。

總結:

      我們在創建引用維度的時候,其實cube底層也是通過SQL查詢數據的,所以它依然會連接我們這些表進行查詢,因此在我們的數據源視圖中如果沒有這些表,則查詢就會失敗,找不到表,因此我們在創建引用維度時候一定要注意:如果分區用到了不同數據源視圖,則需要在相應視圖中添加這個分區中使用的維度表方可。如果沒有使用維度引用,則我們就不需要添加這些表,每個數據源視圖就是一個單獨的分公司即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章