數據透視表是一個很靈活的工具,通過這個工具用戶可以很容易的生成自己需要的報表。無論是對於專業的IT用戶還是業務部門的用戶,他們都很熟悉Excel這個工具,並且對於PowerPivot的使用方法也相當的"爐火純青"。
傳統透視表的數據來源可以是Excel工作表,也可以是分析服務中的多維數據集這兩種主要的方式。相對前者由於數據是存儲在Excel的工作表中,所以業務操作人員很容易上手,很適合小規模的數據統計分析。后者分析服務的多維數據集這種方式,由於數據是以一種特殊的方式聚合在獨特的文件系統中,所以適合大規模的數據量分析,缺點是分析服務的開發對於IT的要求比較高,只能由IT人員完成,所以業務人員的一個需求往往會等待很長的時間才會得到響應。
那么,業務操作人員是否可以有一種高性能的去分析稍微大一點的規模的數據呢?PowerPivot就是微軟提供的一個方案。在這個方案中,數據直接加載到內存當中,並且經過一定的優化,保證了通過透視表的統計有一個很高的性能。
首先,在Excel 2013之前的版本中,這個工具是需要單獨下載的。如果你沒有Office 2013,那么我建議你的版本不要低於2010,在這個版本之中PowerPivot的版本得以演化。
下載地址:
http://www.microsoft.com/en-us/download/details.aspx?id=29074
下載需要留意Excel對應的語言版本還有是32位版還是64位版。
還有需要注意的一個地方是,這個是PovitTable是針對 Excel 2010的第二個版本,之前還有一個版本,在微軟目前的教程以及本文的介紹中缺失了部分功能。所以如果你已經先前安裝了PowerPivot,請務必確認這個版本是否正確。
安裝完畢后,打開Excel后,可以看到Ribbon菜單中多了一項:
使用這個工具前,需要先准備數據。你可以直接使用在 Excel工作表里面的數據,也可以使用SQLServer等其它數據源的數據。
這里假定一個銷售部門的數據,已經在IT部門的數據倉庫中存在了,而銷售分析人員,只需要把相關的數據導入到PowerPivot中,然后通過簡單的設置就可以生成自己的分析模型了。
在PowerPivot選項卡中單擊PowerPoint Window,會打開PowerPivot工具:
假定IT部門已經授予了銷售分析部門的數據倉庫系統部分響應表的訪問權限,那么這里分析人員需要做的就是把相應的表導入到PivotTable工具中。
點擊上圖工具欄中的From Database:
選擇From SQL Server。從這里可以看到,PowerPivot支持的數據源很多,還有Access和SSAS等。
在彈出的表導入工具中,輸入數據倉庫所在的服務器名稱和數據倉庫的名稱。
這里我們使用微軟的示例數據庫Adventure Works來做演示,關於如何獲取和部署這些示例,可以參考我的這篇隨筆。
設置好連接信息后,點擊Next。
接下來的界面會指定如何導入數據,是通過選取表或者視圖的方式,還是一個查詢的方式。這里選擇第一個,點Next。
在數據倉庫下的所有表被列了出來。在這個界面中,可以通過Friendly Name來指定一個友好名稱,然后通過Filter Details指定需要表里的哪些列。
這里假定銷售人員要做Internet Sales分析,在列表里直接找到FactInternetSales表:
這張表是分析用的事實表,然后需要指定相關的維度表。
在PowerPivot有一個很贊的功能就是Selected Related Tables,選擇相關表。假如在數據倉庫中已經定義好了主外鍵關系(現在似乎很少有人願意這么做,但我覺得定義好還是一個不錯的習慣),那么在這里面會直接檢測到,並且自動勾選上那些維表。點擊這個按鈕后,可以發現很多Dim開頭的維表已經都被選中了。
實際的操作中,還是建議這里給每一個表都指定一個Friendly Name,並且做適應的Filter。但這里為了演示方便直接點Finish開始導入數據。
工具開始把數據倉庫里的數據加載到PowerPivot中。完成后點擊Close關閉這個界面。
然后就可以看到被導入進來的表。
在實際環境中,數據倉庫里額數據是每天都在發生變化的,那么如何保持PowerPivot里的數據跟數據倉庫的數據保持同步呢?
如圖單擊Refresh All,PowerPivot就會根據先前的連接設置重新加載這些數據。
導入完畢后,把界面切換到Diagram模式:
界面會從數據視圖切換到Diagram模式(順便說一下,Excel 的第一個PowerPivot版是沒有這個Diagram功能的,這也就是為什么前邊提到一定要確定是第二版):
在這個關系視圖里繼承了數據倉庫中定義的主外鍵結構(熟悉SSAS的同學可以把這里理解為數據源視圖的定義)。
假如實際環境中,數據倉庫沒有定義這部分內容,就需要自己來指定表之間的關系(這個過程對於開發SSAS的朋友來說,更像是在指定"維度用法")。而方法很簡單,假如我要建立FactInternetSales表中ProductKey和DimProduct中的ProductKey列的主外鍵關系,只需拖拽FactInternetSales表中的ProductKey字段到DimProduct表中的ProductKey字段就可以了。
接下來指定一個層次結構。建立層次結構的好處在於,可以方便在后續的透視表操作中,方便維度屬性的導航,比如對於區域維度的,從大洲到國家到省再到市,或者一個時間維度的從年到半年再到季度然后月份和天的導航。這里我們在DimDate表中定義一個年月日的層次結構導航關系。
右鍵DimDate表,選擇Create Hierarchy:
然后,可以看到在表的后面加入了一個新"列"。
重命名這個Hierarchy的名稱為DateHierarchy。
然后,一次拖拽表中的如下列到這個新建的層次中:
CalendarYear
EnglishMonthName
DayNumberOfMonth
為了顯示的友好性,右鍵層次中的CalendarYear,選擇Rename將其重命名為Year,然后依次命名其它層次為Month和Day。
基本的分析模型建立完畢之后,就可以在透視表中瀏覽這些數據了。
如圖,在PivotTable界面中Home標簽點擊PivotTable然后選擇其下的PivotTable。
系統會提示問透視表在新建一個工作表中還是在現有工作表的一個區域,這里選擇新建。
然后,可以看到熟悉的透視表,並且這個透視表自動連接到了PowerPivot里的數據。
實際上這種模式中還有一個PowerPivot Filed List,點擊上圖中的Filed List:
可以看到PowerPivot的Filed List要比傳統的透視表Filed List多了兩個切片器。通過它們可以更明了的進行數據切片分析。
比如,要分析銷售出去的產品中,各個顏色的數據以分析用戶對於顏色的偏好:
拖拽DimProduct的Color到Slicers Vertial,DimDate的DateHierarchy到Row Labels,FactInternetSales的Sum of SalesAmount到Values。
圖中可以看到Color切片器,通過這個切片器里不同顏色的選擇,可以在透視表中依次看到不同顏色的產品分別的銷售額是多少。通過這種切片分析的方法,比透視表中的Report Filter會更直觀一些。
並且可以看到,由於剛才對DimDate建立了一個層次,所以在透視表中使用它的時候,時間變成了可以展開的模式。
以上,一個簡單的分析模型創建完畢,接下來的分析操作跟傳統的透視表操作是一樣的了,這里不做詳細介紹。
如本文開頭所描述,跟傳統的透視表相比,PowerPivot是把數據加載到內存中的,從任務管理器中我們可以看到Excel此時的內存消耗:
正因為數據是被加載到了內存,所以可以保證在數據量很多的情況下,通過透視表也可以進行快速的分析。但是,PowerPivot對數據量還是有一定的要求的,參考PowerPivot容量規范:
http://technet.microsoft.com/zh-cn/library/gg413465.aspx
里面有如下描述:
也就是說,PowerPivot能應付差不多20億條的數據,但還是需要留意這個還要取決於你機器的內存大小。所以,對於中等規模的數據分析,PowerPivot還是很合適不過的,而對於更大一點規模額數據,自然用PowerPivot去連接分析服務數據庫是最合適不過的了。具體采用哪一種方案,還需要根據這些方案不同的特點具體情況具體分析。
BTW:
PowerPivot跟SQL Server 2012 SSAS的Tabular Model很像,它們都是把數據加載到內存中做統計分析。這兩個方案,我個人覺得,首先,它們都不是面向IT人員的,都是面向業務分析人員的。前者操作相對容易些,全部在Excel環境里完成,后者稍微復雜些,需要在Visual Studio的一個Shell中完成,而且需要Tabular Model的特殊的分析服務實例做支持,不過它支持的數據量會更大一些。有了這些工具,確實可以滿足業務分析人員的自服務式的分析需求。但在這樣的一個運作模型中,我認為IT的工作還是很重要的,除了給相應的用戶授權之外,還需要組織和維護數據倉庫,而從業務系統到數據倉庫的過程,基本就占了一個BI項目的大半內容。所以即使PowerPivot的操作是十分方便的,那也是需要IT團隊在后面做很大的支持的。