Qilkview - 細有細玩、大有大玩

不知道讀者們會不會跟筆者一樣喜歡把很多的資訊,都集中在一個介面裡,一目了然地查看自己有興趣的資訊,讓自己看起來很專業和高科技的。有人會叫它作BI Tools,或者Interactive report,而最多人會稱它作Dashboard。

說到Dashboard要用什麼的工具來開發,在坊間有很多的選擇和方法,一個最簡單的方法就是利用Excel預先設計好的圖表,加上某些重要的KPI,一個靜態的Dashboard就完成了,不過Excel最新版本的Excel 2016推出之後多了PowerPivot這個新功能,讓你的圖表更互動和更Readable。

最複雜的玩法,就是把充滿圖表數字結果的Dashboard放在網上供所有人瀏覽,無論後台或前台都要準備不少功夫,前台需要設計網頁,把圖表安置至在其中,而後台則要準備伺服器來Host這個網頁。

不過以經濟效益的角度,找一個性價比最好的工具來開發一個Dashboard,上述的都不是最好。所以我今次要介紹的是Qlikview這個強大和更有彈性的Application,對於新手來說它是一個惡夢,因為它的功能和設定多不勝數,但對高手來說簡直是恩物,本身複雜的圖表,加上一些Coding的幫助,會讓你的Dashboard達到很佳的interactive的效果,更上一層樓。

大概幾年前,筆者在找工作的時候,發現有做BI (Business Intelligence)的公司都在找Qlikview的開發者,雖然不知道Qlikview現在在香港的人力市場裡面還有多少含金量,但至少這個Application在Data Science的世界也是值得一提的。

那麼一起來感受下Qlikview強大的地方吧。由於筆者太過無聊的關係,無意中發現Data.Gov.HK,資料一線通的官網設計進行大翻新過,或許是媒體,業界人士都不停批評政府在推行開放數據顯得緩慢,甚至根本不理解開放數據的真正意思,令它們終於醒覺到需要進行改善工程。無可否認,現在的數據庫是比以前的來得豐富,也多了不少機構提供它們自家的數據。當我看到網頁的右上角顯示了"歷史的數據",我還十分期待有Time Series既數據可以玩一下,卻發現那些根本不是"歷史"數據",是"最新"數據.......我當堂嚇一跳,然後得啖笑。原本還想計劃分析一下我們偉大的港鐵為何進行有加不可減的機制,近幾年車費的升幅是多少,真是可惜。



只有少數的數據庫才是所謂的"歷史性數據",幾經辛苦終於找到香港水域發現的紅潮歷史和最新資訊,由漁農自然護理署所提供。那麽先從官網下載數據庫,格式為CSV的檔案,然後把它直接把倒進Qlikview裡,如下圖:

左上角的"Files" -> 選擇"Edit Scripts" -> 按一下"Table Files" -> 按下"Finish"




你會看到Qlikview已經把你剛才的動作轉為Coding,省下不少時間。由於今次的示範只有一組數據,即是只有一個Table;但如果涉及幾個Data Source的話,意味著進行多次的Loading,Qlikview會自動地把相同名的field進行Join,然後成為一個大的Table,也就是DataMart。如果不想Qlikview自動幫你處理Table的整合,這時候要開始留意Concatenate和Join的用法,否則產生出來的Table會變得極之混亂,導致之後的運算結果全錯。一切都就緒後,按下左上角的"Reload",Qlikview就會把數據倒進Memory裡,我們可以用來建立不同的Chart Object,把資訊可視化。



時間關係,我已經事先準備好六個的圖表,左上兩個List Box顯示了紅潮出現的所有年份和月份,至於下方的Pie Chart表示紅潮品種的分佈。右上方的Line Chart則代表了紅潮頻率隨時間變化的Time Series,由1993年開始有上升的趁勢,近年的數字也很Fluctuate。而樓下的Line Chart則顯示每個月出現的分佈,可以見到四月份是這個紅潮高峰期。很明顯的,最右下的Heat Map顯示了紅潮的位置。



假設我想看看最近3年的紅潮數量和頻率,那麼只要在List Box選取2015至2017,不需要的資訊都會被Filter走,所有圖表接著只會顯示2015至2017年的數據,可以看到品種和月份的分佈立刻變成不同了,這些Interactive的效果讓Dashboard或者BI Tools生息不少,滿足用家們對於Fancy的工具的渴求。而且Qlikview的Interaction的程度,並不至於此,還能寫一些Expression來應付和滿足複雜的Busines Logic,某些圖表需要在哪個時候出現或者消失(e.g. Actual和Forecast的Scenario);那些數字結果應加上負號(e.g. 會計學的Balance Sheet)。所以Qlikview的功能已經能夠滿足Dashboard和Reporting絕大部分的要求,只差在開發者的技術水平或者投放的資源能否應付複雜的Business Requirement。




如果你認為Qlikview只用作開發Dashboard的話,那你就太少看它了,Qlikview不但能處理Data,也可以能夠擔當資料庫或者Data Mar的角色,把Integrate好的Table壓縮在QVD (Qlikview Data file)裡,可以很方便的進行Read和Write,無論Query, Insert, Update和Delete的程序有應有盡有(當然要寫Coding的)。更誇張的是,Qlikview擁有Authentication System的功能,限制用家的Access Right,那些用家可以觀看或者更改那一個圖表。某程度上,Qlikview已經可以把整個Analytic Pipeline做出來,由倒入,處理數據,可視化分析結果,整個的規模可以很簡單,也可以複雜,事在人為。

儘管如此,優點和功能這麼多的Qlikview,也同樣帶來了相應的問題,由於過於複雜的設計,Maintenance的成本可以很高,一旦設計上有所改變,可能會一髮動全身。也因為發揮的空間和設計的彈性大,生成了不同形式的Application,在一間公司裡,容易造成資訊不一致,甚至無法驗證那個數是對的。也可以比喻成金庸小說的各種門派,各有各的練功的方法,要到另一個門派學習另一套功夫,砍掉重練,重新看一遍上一手同事寫的Coding,若果遇上Turnover很高的公司,這個過程也十分費時,因此,Maintanence的成本是管理層其中一個重要的考慮因素。總括而言,Qlikview是不是一個好工具,取決於你可投放的資源和Budget,數據量和複雜性,以及維護成本。不過對於一直追求強大功能的筆者,Qlikview已經是一個挺不錯的選擇。




Comments