由於資料庫備份檔的「科目表」沒有「類別」欄位,但是SSDT的專案有,而此次不須用到「類別」欄位,故直接在SSDT更新資料庫資料即可。
- SQL Server
- 還原bak資料庫。
- SQL Server Data Tools
- 開啟MultidimensionalProject2專案
- 切換到「學生維度.dim」視窗,左側的屬性視窗,把「類別」刪除。
- 切換到「dsv」視窗→上面工具列「資料來源檢視」→重新整理。
- 切換到「cube」視窗,左上「處理」CUBE,「瀏覽器」頁籤,用EXCEL的樞紐分析表檢視此資料。
- 上禮拜課堂做的「前次分數」會撿角是因為樞紐分析表沒有拉正確。
- 篩選:科目階層 (4)
- 欄:段考代號 (2)
- 列:姓名 (1)
- 值:分數(3)>前次分數(5)
–SQL Server Data Tools
- 編輯趨勢KPI:「成績KPI」
- 複製下列內容:
CASE
WHEN [Measures].[分數]-[Measures].[前次分數]>5 THEN 1 WHEN [Measures].[分數]-[Measures].[前次分數]<-5 THEN -1 ELSE 0 END |
- 切換到cube視窗(A12345.cube)的「KPI」頁籤,選取「成績KPI」,將剛剛複製的內容貼到「趨勢KPI」欄位。
- 重新處理CUBE,到EXCEL→「資料」頁籤→全部重新整理。
- 拉一張新的樞紐分析表,「資料」頁籤→外部資料→現有連線→選擇剛剛的連線。樞紐分析表:
- 篩選:段考代號>科目階層
- 欄:(空)
- 列:姓名
- 值:成績KPI(內容(分數))>成績KPI(目標)>成績KPI(狀態)>成績KPI(預測趨勢)
- 胡曰:
用SSDT>EXCEL>樞紐分析表,SQL資料庫只要新增資料,我只要從EXCEL選取段考代號即可檢視新資料。雖然一開始建置的時候比較辛苦,但是之後比較容易檢視及維護。
而如果這個表示用SQL語法硬拉出來,資料庫有新增資料的話,就必須每次更改語法,造成實作及維護不易。
- 新增量值:科目目標
訂定每個科目的目標。
- 在SQL Server,A12345資料庫「科目表」資料表新增一個欄位:
資料行名稱 | 資料類型 |
科目目標 | int |
- 編輯「科目表」資料表,自行亂數輸入「科目目標」
- 回到SQL Server Data Tools,資料來源檢視視窗(A12345.dsv),上面工具列資料來源檢視→重新整理。
- Cube視窗(A12345.cube),「Cube結構」頁籤,左邊「量值」欄按右鍵「新增量值」::
- 使用方式:總和
- 來源資料表:科目表
- 來源資料行:科目目標
- 「顯示所有資料行」不打勾
- 將量值:成績單→成績單 計數,改為「考試人數」
- 重新處理CUBE,到EXCEL「資料」頁籤→連線→全部重新整理,即可看到剛剛建立的「科目目標」,放到樞紐分析表「值」欄位。
- 篩選:段考代號>科目階層
- 欄:(空)
- 列:姓名
- 值:成績KPI(內容(分數))>成績KPI(目標)>成績KPI(狀態)>成績KPI(預測趨勢)>科目目標
- 新增量值:科目目標
訂定每一次不同考試,各科目的目標。
- 在SQL Server,在A12345資料庫新增資料表,,儲存為:段考科目,
資料行名稱 | 資料類型 |
段考代號 | nvarchar(50) |
科目編號 | float |
段考科目目標 | int |
並且設定「段考代號」及「科目編號」為主索引鍵。
- 編輯「段考科目」資料表,自行亂數輸入「段考科目目標」
- 回到SQL Server Data Tools,資料來源檢視視窗(A12345.dsv),左下「資料表」欄位右鍵「加入/移除資料表」→把「段考科目」資料表加到右邊欄位→確定,上面工具列資料來源檢視→重新整理。
- 建立資料表關聯:
- [段考科目.dbo].[段考代號]→[年度段考表.dbo].[段考代號]
- [段考科目.dbo].[科目編號]→[科目表.dbo].[科目編號]
- 新增維度:「段考科目」
勾選「使用現有的資料表」,下一步→主資料表:段考科目,索引鍵資料行:段考代號、科目編號,名稱資料行:段考代號,下一步→相關資料表:年度段考表、科目表,下一步→可用的屬性:段考代號、段考科目目標、科目編號,下一步→命名為:段考科目,完成。
- Cube視窗(A12345.cube),「Cube結構」頁籤,左邊「維度」欄按右鍵「加入Cube維度」:把「段考科目」維度加進來。
- Cube視窗(A12345.cube),「Cube結構」頁籤,左邊「量值」欄按右鍵「新增量值」:
- 使用方式:總和
- 來源資料表:段考科目
- 來源資料行:段考科目目標
- 「顯示所有資料行」不打勾
- 重新處理CUBE,到EXCEL「資料」頁籤→連線→全部重新整理,即可看到剛剛建立的「段考科目目標」,放到樞紐分析表「值」欄位。
- 篩選:科目階層
- 欄:年度段考階層
- 列:姓名
- 值:分數>段考科目目標
- 新增量值:年度目標
訂定每一次不同考試,各科目的目標。
- 在SQL Server,在A12345資料庫新增資料表,,儲存為:年度目標,
資料行名稱 | 資料類型 |
年度 | nvarchar(50) |
目標 | int |
並且設定「年度」為主索引鍵。
- 編輯「年度目標」資料表,自行亂數輸入「目標」
- 回到SQL Server Data Tools,資料來源檢視視窗(A12345.dsv),左下「資料表」欄位右鍵「加入/移除資料表」→把「段考科目」資料表加到右邊欄位→確定,上面工具列資料來源檢視→重新整理。
- 新增維度:「年度目標」
勾選「使用現有的資料表」,下一步→主資料表:年度目標,索引鍵資料行:年度,名稱資料行:年度,下一步→可用的屬性:年度、目標,下一步→命名為:年度目標,完成。
- Cube視窗(A12345.cube),「Cube結構」頁籤,左邊「維度」欄按右鍵「加入Cube維度」:把「年度目標」維度加進來。
- Cube視窗(A12345.cube),「Cube結構」頁籤,左邊「量值」欄按右鍵「新增量值」:
- 使用方式:總和
- 來源資料表:年度目標
- 來源資料行:目標
- 「顯示所有資料行」不打勾
- 定義關聯性:(此步驟沒做的話,目標會自動加總,資料錯誤)
Cube視窗(A12345.cube),「維度使用方式」頁籤,定義關聯性,
- 選取關聯性類型:一般
- 資料粒度屬性:年度
- 維度資料表:年度段考表
- 量值群組資料表:年度目標
- 關聯性:
- 維度資料行:年度
- 量值群組資料行:年度
- 重新處理CUBE,到EXCEL「資料」頁籤→連線→全部重新整理,即可看到剛剛建立的「段考科目目標」,放到樞紐分析表「值」欄位。
- 篩選:年度段考階層>科目階層
- 欄:年度段考階層
- 列:姓名
- 值:分數>年度目標.目標
- 更換「成績KPI」條件
- 切換到Cube視窗(A12345.cube),「KPI」頁籤,左上工具列按「重新連接」,這樣左下量值群組欄位才不會錯誤,並顯示最新的資料表。
- 把目標運算式:改成「[年度目標].[目標]」
- 把狀態運算式:把「分數>=80」的80換成「[年度目標].[目標]」,下面亦同。
CASE
WHEN [Measures].[分數]>=[Measures].[目標] THEN 1 WHEN [Measures].[分數]<[Measures].[目標] THEN -1 ELSE 0 END |
- 重新處理CUBE,到EXCEL「資料」頁籤→連線→全部重新整理。
- 篩選:科目階層
- 欄:年度段考階層
- 列:姓名
- 值:成績KPI>成績KPI目標>成績KPI狀態