ssas漸變維度處理

2022-02-14 11:22:30 字數 2403 閱讀 9851

ssas漸變維度處理

為了能夠追蹤歷史,我們通常有兩種方法:

1.時間戳(起始生效日期和結束日期);

2.使用是否當前有效的字段標記。

這裡使用這些欄位的目的,在於採集事實表時,能根據這些標記查詢對應的維度記錄id(通常使用**鍵,不要使用自然鍵,並且更新時應該先更新維度表,在更新事實表)。

但是我們經常會碰到存在層次關係的維度,在這些維度記錄中通常通過id作為層次關係的根據。如下圖所示的維度物理表: 

設定好層次關係。 

選中屬性列表中的屬性,設定部門,分公司,人員對應的顯示名稱(選中上面屬性行,在屬性視窗的「namecolumn」屬性進行設定)。

檢視結果如下: 

加入現在2010-12-3日,市場部的名字更改成了「銷售部」。更通過漸變維度更新,最將記錄1、2的有效結束日期更改為2010-12-3日,並新增兩條新的記錄。如下圖所示:

注意:記錄3沒有做任何改動,如果2010-12-3日進行事實表更新,則事實表中關聯的id為3、4、5而不再是1、2、3。

如果我們此時重新更新維度,更新到ssas伺服器,則會報錯「olap 儲存引擎中存在錯誤: 處理時找到重複的屬性鍵: 表:「dbo_人員維度」,列:「部門id」,值:「1001」。該屬性為「部門id」。」

因為更新維度時,1001對應另個名字「市場部」「銷售部」。我們必須對老的記錄和新記錄的資料進行「隔離」。

選中屬性列表中的部門id設定「鍵列」(設定屬性視窗中的keycolumns),我們看到只有「部門id」,把「有效開始時間」也放進來變成組合鍵列,並且人員也進行同樣的設定。最頂級別的「分公司id」則用「分公司id」和「分公司名稱」做為組合鍵。 

更新到伺服器後,可以看到如下的層次結構:  

有些人會說,當前「市場部」已經不要了,怎麼還出來了。其實這個沒關係,因為我們檢視事實表的時候有個時間維度,選定乙個日期關聯的事實表,而同一天的這些事實表不可能同時有關聯「市場部」又有關聯「銷售部」的。 

總之:最高端別的「分公司」的鍵列為「分公司id」+「分公司名稱」;其他的鍵列為「id」+「有效其實日期」。 

怎麼使用mdx查詢歷史資料:

這裡的時間戳,只是為了事實表關聯維度表的時候,能根據這個時間戳(有效標誌)找到當時應該對應的維度記錄行。實際查詢的時候,應該根據時間查出事實表,然後事實表表記錄自動關聯起歷史中的維度 

只能在vs2008下才能新建維度屬性關係。在vs2005上沒有這個頁籤。

緩慢變化的維表:

員工**鍵       生效日期        失效日期         員工id     員工姓名     所屬部門

1                  20010101      20091231         a              張三            營業部 

2                  20100101      20991231         a              張三            市場部

事實表:

員工**鍵     資料所屬日期       事實資料

1                20050101        100.00

2                20100501        220.00

歸納:1、緩慢變化維可以認為是維度的關鍵屬性發生變化時,根據變化時間將資料進行拆分並獨立id(**鍵)化(個人觀點描述,大體是這樣)

2、維度中必須包含生命週期(有效時間段)和虛擬的id(**鍵),這樣才能有效區分資料的變化

3、事實表中用維表id(**鍵)進行外來鍵匹配,保證按照時間統計可區分維度屬性的變化

4、事實表盡量包含乙個資料所屬日期,以保證資料是可逆的,也就是說當事實表損壞的時候可利用資料所屬日期重新匹配維表(資料所屬日期 between (生命週期) )

5.6讀後感:

1.資料倉儲的 維表設計:**鍵,使用者id,使用者name,生效日期,失效日期 

事實表設計:**鍵,資料所屬日期

2.如果維表發生變化,首先在維表新增一條新資料,生效日期,並把舊資料的失效日期改為新資料的生效日期。

3.當有新的事實資料產生時,我們先用

select 維表**鍵 from 維表

where 使用者id=xx

and事實表的資料所屬日期  between 維表的生效日期 and 維表的失效日期 。

把得到的**鍵插入到事實表的新一條資料中。

4.在建ssas的cube時,用事實表的**鍵 關聯 維表的**鍵 ,事實表的日期 關聯 日期維度的日期id

5.cube建立完成後,查詢資料一定要選日期維度。

最後:ssas的cube只能做關聯 **鍵,拿**鍵對應的資料,對資料的處理 還得在資料倉儲設計和etl這一段解決......

5 2 1 SSAS 維度 雪花維度

維度 雪花維度的建立 1 雪花維度 當事實表有多個維度但不是所有維度都直接與事實表進行關聯時,我們稱之為雪花維度。比如,產品維度直接關聯事實表,但是產品維度又關聯分類維度,此時我們稱之為雪花維度。2 建立雪花維度 維度 右鍵 新建維度 使用現有表 資料來源檢視 adventureworksdw 主表...

5 2 2 SSAS 維度 父子維度

維度 父子維度的建立 1 父子維度 當維度表為自引用結構時,可以建立父子維度。自引用結構可以反映不限制層級深度的多叉樹結構。2 建立父子維度 維度 右鍵 新建維度 使用現有表 資料來源檢視 adventureworksdw 主表 dimemployee 鍵列 employeekey 名稱列 firs...

SSAS維度設計技巧

基本維度用法 維度 分類 如何對度量 計算 起作用?常規關係 維度表與事實表之間是一對多關係 引用關係 維度表與事實表之間通過一張中間表進行關聯 事實關係 沒有維度表,事實表中的字段與事實表進行關聯,即退化維,效能比較差,最好不用 複雜維度用法 多對多關係 維度型別 即伺服器維度,舉個例子,我們現在...