事實上我們已經存在一個簡單的資料分析系統了,只不過這個是以前人家做的,沒有採用sqlserver2005的BI平台來做,而是直接寫winform程式來弄的。原來的資料幫浦是主站那邊提供匯出的excel檔案過來,然後到我們這邊,匯入到我們的分析庫中去。
前文回顧:Sqlserver BI--資料倉儲設計
這節我們主要講講我的遊戲交易資料分析項目的ETL(資料幫浦、載入、轉換)具體是怎麼做的。
先來講下源系統吧,因為我們的交易主站的伺服器不是架在公司的,因此不能直接從源系統直接抽取資料了。事實上我們已經存在一個簡單的資料分析系統了,只不過這個是以前人家做的,沒有採用sqlserver2005的BI平台來做,而是直接寫winform程式來弄的。原來的資料幫浦是主站那邊提供匯出的excel檔案過來,然後到我們這邊,匯入到我們的分析庫中去。
好了,為了簡便,事實上我只是在做一個demo,為以後項目做準備,所以我們抽取資料直接是從上面說的已經存在分析庫中抽的,因為資料結構比較相近,所以ETL過程還是比較簡單的。
先看看遊戲維度資料表吧:
首先,我們來建立一個Integration Services項目。
接著,建立一個ImportDimGamePackage.dtsx的SSIS包。
拖放一個資料流程工作到控制流程面板上()
雙擊資料流程工作,來到資料流面板
接著我們拖動OLEDB源到資料流面板上,並且雙擊編輯它,建立一個串連和選擇要抽取資料的來源資料表。
然後我們拖動一個OLEDB目標到資料流面板上,把OLEDB源和OLEDB目標串連起來,並且雙擊編輯,建立一個串連和選擇我們要存放資料的目標表
然後建立源表與目標表之間的映射。
所有的都弄好了,運行,OK,成功了。
接著部門維度和物品維度都跟這個差不多。時間維度是我建立的,暫時我用winform寫了一個日期維度產生器。
下面就講交易資料事實表,這個比維度稍微複雜一點點。因為源系統和目標系統資料結構很類似,所以我的ETL都是非常簡單的,在實際項目中,能夠有這麼好的運氣是不可能的,呵呵。
首先建立一個ImportFactGameTradeDataPackage.dtsx的SSIS包。
其他簡單的步驟跟上面一樣,我就講講不一樣的地方。因為我在資料庫設計的時候,各個維度都用了代理鍵,也就是說在我們的資料倉儲裡面的維度和事實表的外部索引鍵關聯都是通過代理鍵的,源系統中的鍵我們只不過用一個欄位記錄了下來。所以我們資料幫浦過來的時候,要對源系統中的映射關係進行改變。
這裡的關鍵就是我們在編輯資料流的時候,使用了一個叫做“尋找”的組件。編輯好的資料流
接下來我們詳細講下尋找列是怎麼用的,拿尋找GameKey來講把。
1。雙擊尋找GameKey組件,在參考資料表面板上面選擇好我們要尋找的表,在這裡就是我們資料倉儲表中的遊戲維度資料表。
2。在列面板裡面建立要尋找的欄位跟源系統事實表的欄位的映射。
3。把尋找到的列作為新列添加,並取一個唯一的別名(在後面與OLEDB目標的時候建立映射的時候,會用到這裡尋找到的列)。
接著其他的幾個維度代理鍵的尋找都類似,OLEDB目標的欄位對應跟維度資料表的匯入類似。
好了,今天主要介紹了簡單的Sqlserver2005 Integration Services的使用,今天涉及了到裡面幾個概念,資料流程工作,OLEDB源,OLEDB目標,尋找等。
下一節,我準備寫一下使用Sqlserver2005 Analysis Services建立OLAP資料庫的過程。