- 緩時變維度
維度是經由時間緩慢的變化。
Type0:Retain Original 假設學生資料表,有兩位在98學年度轉學。
- 建立Analysis Services專案、維度、Cube
─SQL Server Data Tools For Visual Studio─
- 左上點選新增→專案→Analysis Services多維度和資料採礦專案
- 新增資料來源:
右邊「方案總管」→資料來源→右鍵新增資料來源→下一步→New…→伺服器名稱:.、資料庫名稱:A123456→OK→下一步→勾「繼承」→下一步→完成
- 新增資料來源檢視:
右邊「方案總管」→資料來源檢視→右鍵新增資料來源檢視→下一步→選剛剛建立的資料來源(A123456)→下一步→下一步→選取全部資料表移到右邊「包含的物件」→下一步→完成
- 設定邏輯主索引鍵、建立關聯
針對[科目表.科目編號]、[學生表.座號]、[年度段考表.段考代號],右鍵→設定邏輯主索引鍵,並建立資料表關聯(如圖)。
- 新增維度:
右邊「方案總管」→維度→右鍵新增維度→下一步→勾「使用現有資料表」→下一步→
主資料表 | 索引建資料行 | 名稱資料行 | 命名為 |
年度段考表 | 段考代號 | 段考代號 | 段考維度 |
科目表 | 科目編號 | 科目編號 | 科目維度 |
學生表 | 座號 | 座號 | 學生維度 |
→下一步→可用的屬性:全勾→下一步→完成。
- 建立階層:
建立「段考階層」:年度>段考。
- 新增Cube
右邊「方案總管」→CUBE→右鍵CUBE→下一步→勾”使用現有資料表”→下一步→量值群組資料表:勾選「成績單」→下一步→下一步→下一步→下一步→完成。
左上「處理」。
- 如果執行撿角,請回去SQL Server授予目前使用者(as)讀取A123456資料庫的權限(db_owner或db_datareader)。
(安全性→登入→選取目前使用者(as)→右鍵”屬性”→左邊”使用者對應”→右邊勾選資料庫和權限)
- 變更「學生表」資料,新增「學年」欄位與資料
─SQL Server─
- 開啟SQL Server 2014 → 伺服器名稱:.、驗證:Windows驗證
- 在[A123456].[學生表.dbo]右鍵設計,新增一個欄位:
- 資料行名稱:學年
- 資料類型:nvarchar(50)
(必須要跟年度段考表的年度串起來,所以資料類型要相同。)
,左上儲存。
- 在[A123456].[學生表.dbo]右鍵編輯前200個資料列,點選左上角空白,全選資料表,複製到EXCEL貼上
─Excel─
- 將剛剛複製的「學生表」內容貼上,再到底下貼上一次(共兩次)。
- 輸入「年度」欄位的資料:
- 第一次貼上的部分:97
- 第二次貼上的部分:98
- 把98年最後兩個同學刪除後,整個資料複製回去SQL Server覆蓋。
─SQL Server─
- 在[A123456].[學生表.dbo]右鍵編輯前200個資料列,點選左上角空白,全選資料表,右鍵>刪除,右鍵>貼上。
- 重新處理Cube(解決學生表主索引鍵重複的錯誤)
- 如果直接去重新整理,把學生維度的年度拉進來後,處理Cube時會發生錯誤。因為座號是主索引鍵,而剛剛複製兩份學生表資料,造成主索引鍵重複。)
─SQL Server Data Tools For Visual Studio─
- 到資料來源檢視,學生表最上面按右鍵>新增具名計算
- 資料行名稱:Key
- 運算式:年度+cast(座號 AS varchar(10))
把「Key」設定成邏輯主索引鍵,學生表最上面按右鍵>瀏覽資料,確認資料有沒有串起來。
- 到「Dim_學生」,把剛剛新增的「Key」加進來,左邊屬性點選「Key」,右下角屬性把「Usage設定成Key」。(可是這樣處理Cube會出錯,所以重新建立學生表的維度。)
- 重新建立「Dim_學生」,並新增兩個階層:
- 年度座號階層:年度>座號
- 年度姓名階層:年度>姓名
,左上角「處理」。
- 非對稱性維度
- 建立Analysis Services專案、維度
─SQL Server Data Tools For Visual Studio─
- 左上點選新增→專案→Analysis Services多維度和資料採礦專案
- 新增資料來源:
右邊「方案總管」→資料來源→右鍵新增資料來源→下一步→New…→伺服器名稱:.、資料庫名稱:SSAS2008OLAP_Sample→OK→下一步→勾「繼承」→下一步→完成
- 新增資料來源檢視:
右邊「方案總管」→資料來源檢視→右鍵新增資料來源檢視→下一步→選剛剛建立的資料來源(SSAS2008OLAP_Sample)→下一步→下一步→選取「Dim_Region」資料表移到右邊「包含的物件」→下一步→完成
- 設定邏輯主索引鍵
針對[Dim_Region.REGION_KEY],右鍵→設定邏輯主索引鍵,並建立資料表關聯。
- 新增維度:
右邊「方案總管」→維度→右鍵新增維度→下一步→勾「使用現有資料表」→下一步→
主資料表 | 索引建資料行 | 名稱資料行 | 命名為 |
DIM REGION | REGION_KEY | REGION_KEY | Dim_REGION |
→下一步→可用的屬性:全勾→下一步→完成。
- 建立階層:
建立「REGION階層」:GROUP NAME>COUNTRY NAME>REGION NAME。
- 左上「處理」維度,到「瀏覽器」頁籤檢視資料,會發現:
各地區都有一層一層向下的階層資料,例如:大中華區>台灣>台北,但是有一筆資料是:大中華區>香港>香港,就很奇怪。
- 回到dim,到「維度結構」頁籤,點選階層裡面的「REGION NAME」,到右下角屬性設定
- HideMemberIf:ParentName
(如果下面這層跟上一層的資料一樣,該層不顯示)(ex:香港)
- 循環對應維度的處理
- 加入資料表、建立維度
- 在資料來源檢視中,對空白處按右鍵加入/移除資料表:DIM_ EMPLOYEE。
- 將「EMPLOYEE _KEY」設定成邏輯主索引鍵。
- 將「MANAGER_KEY」拖曳對應到「EMPLOYEE _KEY」,成為循環對應
- 新增維度:
右邊「方案總管」→維度→右鍵新增維度→下一步→勾「使用現有資料表」→下一步→
主資料表 | 索引建資料行 | 名稱資料行 | 命名為 |
DIM EMPLOYEE | EMPLOYEE_KEY | MANAGER_KEY | Dim_REGION |
→下一步→可用的屬性:全勾→下一步→完成。
- 回到Dim EMPLOYEE.dim切換到「維度結構」頁籤
- 點擊左上角屬性:EMPLOYEE KEY,到右下角屬性去設定:找Keycolumn>Namecolumn下拉式清單選EMPLOYEE NAME
- 點擊左上角屬性:MANAGER KEY,到右下角屬性去設定:找Keycolumn>NamingTemplate下拉式清單定義:總經理、副總、協理
- 點擊左上角屬性:MANAGER KEY,到右下角屬性去設定:找MembersWithData:NonLeafDataHidden。