SSDT新增量值

由於資料庫備份檔的「科目表」沒有「類別」欄位,但是SSDT的專案有,而此次不須用到「類別」欄位,故直接在SSDT更新資料庫資料即可。

  • SQL Server
  1. 還原bak資料庫。
  • SQL Server Data Tools
  1. 開啟MultidimensionalProject2專案
  2. 切換到「學生維度.dim」視窗,左側的屬性視窗,把「類別」刪除。
  3. 切換到「dsv」視窗→上面工具列「資料來源檢視」→重新整理。
  4. 切換到「cube」視窗,左上「處理」CUBE,「瀏覽器」頁籤,用EXCEL的樞紐分析表檢視此資料。
  • 上禮拜課堂做的「前次分數」會撿角是因為樞紐分析表沒有拉正確。
  • 篩選:科目階層 (4)
  • 欄:段考代號 (2)
  • 列:姓名 (1)
  • 值:分數(3)>前次分數(5)

–SQL Server Data Tools

  • 編輯趨勢KPI:「成績KPI」
  1. 複製下列內容:
CASE

WHEN [Measures].[分數]-[Measures].[前次分數]>5 THEN 1

WHEN [Measures].[分數]-[Measures].[前次分數]<-5 THEN -1

ELSE 0

END

  1. 切換到cube視窗(A12345.cube)的「KPI」頁籤,選取「成績KPI」,將剛剛複製的內容貼到「趨勢KPI」欄位。
  2. 重新處理CUBE,到EXCEL→「資料」頁籤→全部重新整理。
  3. 拉一張新的樞紐分析表,「資料」頁籤→外部資料→現有連線→選擇剛剛的連線。樞紐分析表:
  • 篩選:段考代號>科目階層
  • 欄:(空)
  • 列:姓名
  • 值:成績KPI(內容(分數))>成績KPI(目標)>成績KPI(狀態)>成績KPI(預測趨勢)
  • 胡曰:

用SSDT>EXCEL>樞紐分析表,SQL資料庫只要新增資料,我只要從EXCEL選取段考代號即可檢視新資料。雖然一開始建置的時候比較辛苦,但是之後比較容易檢視及維護。

而如果這個表示用SQL語法硬拉出來,資料庫有新增資料的話,就必須每次更改語法,造成實作及維護不易。

  • 新增量值:科目目標

訂定每個科目的目標。

  1. 在SQL Server,A12345資料庫「科目表」資料表新增一個欄位:
資料行名稱 資料類型
科目目標 int
  1. 編輯「科目表」資料表,自行亂數輸入「科目目標」
  2. 回到SQL Server Data Tools,資料來源檢視視窗(A12345.dsv),上面工具列資料來源檢視→重新整理。
  3. Cube視窗(A12345.cube),「Cube結構」頁籤,左邊「量值」欄按右鍵「新增量值」::
  • 使用方式:總和
  • 來源資料表:科目表
  • 來源資料行:科目目標
  • 「顯示所有資料行」不打勾
  1. 將量值:成績單→成績單 計數,改為「考試人數」
  2. 重新處理CUBE,到EXCEL「資料」頁籤→連線→全部重新整理,即可看到剛剛建立的「科目目標」,放到樞紐分析表「值」欄位。
  • 篩選:段考代號>科目階層
  • 欄:(空)
  • 列:姓名
  • 值:成績KPI(內容(分數))>成績KPI(目標)>成績KPI(狀態)>成績KPI(預測趨勢)>科目目標
  • 新增量值:科目目標

訂定每一次不同考試,各科目的目標。

  1. 在SQL Server,在A12345資料庫新增資料表,,儲存為:段考科目,
資料行名稱 資料類型
段考代號 nvarchar(50)
科目編號 float
段考科目目標 int

並且設定「段考代號」及「科目編號」為主索引鍵。

  1. 編輯「段考科目」資料表,自行亂數輸入「段考科目目標」
  2. 回到SQL Server Data Tools,資料來源檢視視窗(A12345.dsv),左下「資料表」欄位右鍵「加入/移除資料表」→把「段考科目」資料表加到右邊欄位→確定,上面工具列資料來源檢視→重新整理。
  3. 建立資料表關聯:
  • [段考科目.dbo].[段考代號]→[年度段考表.dbo].[段考代號]
  • [段考科目.dbo].[科目編號]→[科目表.dbo].[科目編號]
  1. 新增維度:「段考科目」

勾選「使用現有的資料表」,下一步→主資料表:段考科目,索引鍵資料行:段考代號、科目編號,名稱資料行:段考代號,下一步→相關資料表:年度段考表、科目表,下一步→可用的屬性:段考代號、段考科目目標、科目編號,下一步→命名為:段考科目,完成。

  1. Cube視窗(A12345.cube),「Cube結構」頁籤,左邊「維度」欄按右鍵「加入Cube維度」:把「段考科目」維度加進來。
  2. Cube視窗(A12345.cube),「Cube結構」頁籤,左邊「量值」欄按右鍵「新增量值」:
  • 使用方式:總和
  • 來源資料表:段考科目
  • 來源資料行:段考科目目標
  • 「顯示所有資料行」不打勾
  1. 重新處理CUBE,到EXCEL「資料」頁籤→連線→全部重新整理,即可看到剛剛建立的「段考科目目標」,放到樞紐分析表「值」欄位。
  • 篩選:科目階層
  • 欄:年度段考階層
  • 列:姓名
  • 值:分數>段考科目目標
  • 新增量值:年度目標

訂定每一次不同考試,各科目的目標。

  1. 在SQL Server,在A12345資料庫新增資料表,,儲存為:年度目標,
資料行名稱 資料類型
年度 nvarchar(50)
目標 int

並且設定「年度」為主索引鍵。

  1. 編輯「年度目標」資料表,自行亂數輸入「目標」
  2. 回到SQL Server Data Tools,資料來源檢視視窗(A12345.dsv),左下「資料表」欄位右鍵「加入/移除資料表」→把「段考科目」資料表加到右邊欄位→確定,上面工具列資料來源檢視→重新整理。
  3. 新增維度:「年度目標」

勾選「使用現有的資料表」,下一步→主資料表:年度目標,索引鍵資料行:年度,名稱資料行:年度,下一步→可用的屬性:年度、目標,下一步→命名為:年度目標,完成。

  1. Cube視窗(A12345.cube),「Cube結構」頁籤,左邊「維度」欄按右鍵「加入Cube維度」:把「年度目標」維度加進來。
  2. Cube視窗(A12345.cube),「Cube結構」頁籤,左邊「量值」欄按右鍵「新增量值」:
  • 使用方式:總和
  • 來源資料表:年度目標
  • 來源資料行:目標
  • 「顯示所有資料行」不打勾
  1. 定義關聯性:(此步驟沒做的話,目標會自動加總,資料錯誤)

Cube視窗(A12345.cube),「維度使用方式」頁籤,定義關聯性,

  • 選取關聯性類型:一般
  • 資料粒度屬性:年度
  • 維度資料表:年度段考表
  • 量值群組資料表:年度目標
  • 關聯性:
  • 維度資料行:年度
  • 量值群組資料行:年度
  1. 重新處理CUBE,到EXCEL「資料」頁籤→連線→全部重新整理,即可看到剛剛建立的「段考科目目標」,放到樞紐分析表「值」欄位。
  • 篩選:年度段考階層>科目階層
  • 欄:年度段考階層
  • 列:姓名
  • 值:分數>年度目標.目標
  • 更換「成績KPI」條件
  1. 切換到Cube視窗(A12345.cube),「KPI」頁籤,左上工具列按「重新連接」,這樣左下量值群組欄位才不會錯誤,並顯示最新的資料表。
  2. 把目標運算式:改成「[年度目標].[目標]」
  3. 把狀態運算式:把「分數>=80」的80換成「[年度目標].[目標]」,下面亦同。
CASE

WHEN [Measures].[分數]>=[Measures].[目標] THEN 1

WHEN [Measures].[分數]<[Measures].[目標] THEN -1

ELSE 0

END

  1. 重新處理CUBE,到EXCEL「資料」頁籤→連線→全部重新整理。
  • 篩選:科目階層
  • 欄:年度段考階層
  • 列:姓名
  • 值:成績KPI>成績KPI目標>成績KPI狀態

Leave a Reply