容易被誤解的PowerPivot for Excel(原Windows Live Spaces 舊文)
在這次微軟新商業智慧解決方案發布之後,想必已經有不少人已經有聽說過「PowerPivot」這個新名詞,不過PowerPivot到底是甚麼?反倒有不少人說不出個所以然。以我在上課的經驗看來,最多人的回答是說:「就跟以前的樞紐分析表差不多啊(哀~~誰叫它取名叫做威力的樞紐分析!!!),只不過圖表比較漂亮,還多了交叉分析篩選器(slicer)功能」。
誤會可大了,其實PowerPivot是一種全新的商業智慧概念,可以用來補足目前既有商業智慧平台無法解決的問題。早期資料倉儲架構之下,資料庫是主要的資料存取來源,因此都是透過SQL語法來存取關聯式資料庫,不過當資料量越來越大,傳統的SQL查詢免不了會面對到資料量的限制,因此查詢效能變差,這時候新的資料來源多維度分析於是問世,它透過事前彙總的模式解決了效能的問題,同時也透過拖拉的方式簡化了分析個過程(分析者不需要懂得使用MDX語法)。不過多維度分析並非沒有缺點,最常遭議的問題在於多維度分析事先彙總的特性也限制了它的應用彈性,舉例來說,在進行金額的分析時,多維度分析比較擅長的是平均銷售金額,但是分析者可能想知道的是每次購物的金額級距,而且這個級距可能是隨時變動的,這時候就沒辦法使用既有的多維度分析來實作了。此外,Cube的開發需要比較多的時間與專業,對於很多重要性沒那麼高的臨時需求,或者是需要整合多種異質資料平台才能處理的分析,資訊單位可能不會立即協助開發Cube以滿足使用者需求。
PowerPivot是一種全新的商業智慧資料來源。要注意歐,它的全名是「SQL Server PowerPivot for Excel 2010」以及「SQL Server PowerPivot for Excel 2010」,看到了沒,重點在它前面冠的是SQL Server而不是Office!!PowerPivot是一種以欄位為儲存基礎的記憶體版SSAS機制,當使用者點選Excel上面的PowerPivot增益集後,會首先把一個本機板的SSAS (Analysis Services)載入到使用者電腦的暫存資料夾中(C:\Users\<<USERNAME>>\AppData\Local\Temp directory),然後根據使用者連結外部資料的設定,將外部資料讀取後直接寫入記憶體中。因為所有外部資料都寫入至記憶體,所以變成不分家了,因此即使你讀取的資料橫跨SQL Server、Oracle等不同資料庫,因為資料都讀取至記憶體,因此跨資料庫的資料內容就可以四海一家的被設定關聯性以及整合運算。這時候你會發現,載入至PowerPivot增益集的資料並不能像之前在Excel的活頁簿般讓我們隨意修改或刪除單筆資料的,那是因為載入時,資料其實已經是以多維度彙總的模式即時進行彙總,它顯示在畫面的資料其實只是根據索引所顯示的局部明細資料而已。
那PowerPivot的好處在哪?我們都知道記憶體的運算速度是遠快於系統磁碟的I/O的,因此我們可以運用記憶體計算技術來做到跨異質系統的資料即時運算。但是如果只是保持資料的原貌,意義就不大了,因此微軟特別為PowerPivot設計了全新的資料分析運算式(DAX, Data Analysis Expression)語言。大家可能會嘆口氣,又要學新語言啊….,放心,DAX是一種既有Excel公式的延伸語法,其實各位就把它當作是微軟增加了既有的Excel函數就好了。不過最大的差異在於DAX可以用來處理多個資料表間的運算,而這個運算是根據PowerPivot中的資料表關聯性設定來進行的,此外,因為PowerPivot是一種以欄位為基礎的儲存體,因此PowerPivot是不能像一般Excel公式般設定在儲存格範圍中,而是一次就必須套用在整個欄位,因此使用者可以透過這種方式來產生計算欄位(Calculated Columns)以及計算量值(DAX Measures)。前者其實就跟一般資料庫的View差不多,至於後者則是利用DAX作為中繼語言,翻譯為本機版SSAS的MDX語言,因此它可以做到像是比率計算、半加成計算(semi-addictive)、期間比較、時間智慧分析等與一般多維度分析無異的進階分析功能。這表示使用者可以根據既有已經熟悉Excel公式的基礎(各公司的Excel高手實在是多到不勝枚舉…),就可以運用PowerPivot存取大量異質平台資料,以及著手進行資料關聯性設定,資料清理,而每個動作都會即時將成果轉換為記憶體彙總,也因此使用者可以利用Excel、Report Builder以及PerformancePoint等分析工具存取。
很多人對於PowerPivot卻步的原因在於資料安全性,各位可以放心,它不會有資料外洩的問題,並不是資料會透過PowerPivot就載入到Excel活頁簿中,讓人隨手帶了就走,當你關閉了PowerPivot,此時存放在記憶體的資料就會消失,而僅是儲存SSAS彙總的備份檔而已。如果要讀取資料或者是更新資料,必須等開啟檔案以及開啟PowerPivot後,資料才會再度載入至記憶體中。
記憶體計算當然衍生出來的前提就是使用者的電腦就該升級囉。不過對於異質資料過度分散、資料重要性較瑣碎、邏輯經常異動,以及公司有既有的Excel高手來說,PowerPivot將會是可以解決很多分析需求的可考慮模式。
Allan Yiin
CTO, AsiaMiner