SqlServer 2012 建立資料倉庫
接上一篇:資料倉庫與資料挖掘 4(上)
複習一下,資料倉庫模型
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI2EzX4xSZz91ZsAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLO12b1A3UhVDUDJWNx1CT2Y3QaVTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLiNWZidTZilTM3EDN1QzN5EWMjRDNiFDNhdDMzATMyU2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
年齡維表
點選SSIS右鍵建立SSIS包,設定資料流任務,添加OLEDB源【這部分方法都是一樣的,省略】
抽取Customers資料,選取OnRet資料庫的Customers表,勾選年齡外部列
添加派生,派生維成員
文法:
«boolean_expression» ? «when_true» : «when_false»
派生列:年齡層次的資料類型和資料倉庫中維表設定的資料類型不一緻,有一個很讨巧的方法,在增加一個派生列年齡層次1,将年齡層次轉換資料類型。用的是類型轉換函數。
增加排序,去除重複記錄
最後,添加OLEDB目标,設定輸出表為SDW的Age表,并設定映射,部署之後就能得到結果。
Education 維表
點選SSIS右鍵建立SSIS包,設定資料流任務,添加OLEDB源【這部分方法都是一樣的,省略】
抽取Customers資料,選取OnRet資料庫的Customers表,勾選學曆外部列。
老問題,沒有維層次。于是–增加派生列!
(本想直接在前面轉換類型但,但是不成功,唉)
文法,
[學曆] =="博士" || [學曆] =="碩士" ? "高" : ([學曆] =="大學" || [學曆] =="高中"?
"中" : "低")
為了比對資料類型,再一次派生
文法
最後,添加OLEDB目标,設定輸出表為SDW的Education表,并設定映射,部署之後就能得到結果。
商品維表
這裡省略一些步驟 。。。
抽取Products資料,選取OnRet資料庫的Products表,勾選分類、子類、品牌外部列。
排序,去除重複行
添加OLEDB目标,設定輸出表為SDW的Products表,并設定映射,部署之後就能得到結果。
事實表
終于等到你。。。
大概要這樣:
一樣的,點選SSIS右鍵建立SSIS包,設定資料流任務,添加OLEDB源,資料來源為Sales表
數量、金額是我們關心的路徑成本,而日期,使用者名和分類是連接配接維表
添加 查找元件在下方,輕按兩下編輯
此時事實表記錄要比對剛剛輸出的時間次元的主鍵,是以連接配接為SDW
選擇主鍵
其它維表也是同理,正常設定均一緻
商品類别維表比對
學曆維表比對
對學曆進行查找,設定連接配接為SDW下Education表,列設定如上。
年齡維表比對
對年齡進行查找,設定連接配接為SDW下Age表,列設定如上。
地理維表比對
對地理進行查找,設定連接配接為SDW下Locates表,列設定如上。
排序
之後對兩個比對輸出均按使用者名進行排序。
最後,添加OLEDB目标,設定輸出表為SDW的Sales表,并設定映射,部署之後就能得到結果
實驗結果
事實表:
時間維表
年齡次元Age表
受教育程度Education表
地理次元Locates表
商品次元Products表
參考
https://docs.microsoft.com/en-us/sql/integration-services/sql-server-integration-services?view=sql-server-ver15