BI 是如何數(shù)據(jù)分析的?
企業(yè)部署商業(yè)智能BI前,需要進(jìn)行詳細(xì)的分析,了解BI能為企業(yè)帶來(lái)多少價(jià)值?如何提高工作效率的等等,今天我們就來(lái)聊一聊 BI 的工作原理。
一、BI的取數(shù)方式
商業(yè)智能BI是通過(guò)訪問(wèn)和連接業(yè)務(wù)系統(tǒng)數(shù)據(jù)源數(shù)據(jù)庫(kù)的方式來(lái)進(jìn)行取數(shù)的,不管是什么樣類(lèi)型的數(shù)據(jù)庫(kù),商業(yè)智能BI通過(guò)ETL連接數(shù)據(jù)庫(kù)抽取業(yè)務(wù)系統(tǒng)原表數(shù)據(jù)到數(shù)據(jù)倉(cāng)庫(kù)中加工處理,最后支撐到前端的可視化分析報(bào)表展現(xiàn)。

?
之前有朋友這么提問(wèn)的:數(shù)據(jù)源層是需要開(kāi)發(fā)接口嗎?
這是回答:
一般不需要,基本上這么提問(wèn)的都是經(jīng)歷過(guò)軟件系統(tǒng)的接口對(duì)接,軟件系統(tǒng)的接口對(duì)接是因?yàn)橛械臉I(yè)務(wù)軟件是 JAVA 開(kāi)發(fā)的,有的是 .NET 開(kāi)發(fā)的,有的是 B/S 架構(gòu),有的是 C/S 架構(gòu)。軟件系統(tǒng)之間的接口是需要開(kāi)發(fā)參與的,主要是串聯(lián)不同軟件的業(yè)務(wù)流程,這種接口是需要?jiǎng)哟a的。 但商業(yè)智能BI在獲取數(shù)據(jù)的接口不一樣,是與業(yè)務(wù)系統(tǒng)軟件自身無(wú)關(guān)的,是只需要訪問(wèn)和連接業(yè)務(wù)系統(tǒng)背后的數(shù)據(jù)庫(kù)就可以的,直接從數(shù)據(jù)庫(kù)取數(shù),因此是不需要軟件接口,或者沒(méi)有軟件接口訪問(wèn)這種概念的。
除非一種情況,這個(gè)業(yè)務(wù)系統(tǒng)是公有云,純 SAAS 模式,這種情況下就只能通過(guò)軟件對(duì)外開(kāi)放的 API 接口取數(shù)了。

?

?
二、報(bào)表工具是怎么來(lái)的?
這十幾年我一直在技術(shù)領(lǐng)域、信息化領(lǐng)域、商業(yè)智能BI 行業(yè),一直沒(méi)有出這個(gè)圈。做過(guò) JAVA ( AWT、SWING、JSP、Hibernate、Spring、ibatis )、.NET ( ASP、http://ASP.NET、C#.NET )、Object-C 、JS 等等技術(shù)開(kāi)發(fā),業(yè)務(wù)軟件系統(tǒng)平臺(tái)開(kāi)發(fā)。
早期前端技術(shù)很弱,AJAX 的實(shí)現(xiàn)也都需要手寫(xiě),要實(shí)現(xiàn)一個(gè)表單內(nèi)數(shù)據(jù)的點(diǎn)擊編輯和修改需要自己用 JS DOM 操作。做報(bào)表基本上就是 JSP、ASP 腳本語(yǔ)言在前端嵌套 HTML 做循環(huán)輸出,報(bào)表樣式很原生很丑陋,稍微復(fù)雜一點(diǎn)的表格報(bào)表樣式都需要用 JS 來(lái)調(diào)整。
那個(gè)時(shí)候用過(guò)的報(bào)表像 Crystal Report 水晶報(bào)表、潤(rùn)乾報(bào)表等等,在前端腳本語(yǔ)言中有標(biāo)簽直接可以引用,報(bào)表生成代替了大量的手寫(xiě)代碼。早期的前后端技術(shù)是不分家的,http://ASP.NET 還稍微好一些,前端逐步有一些集成控件可以直接使用,JAVA 是真沒(méi)有。上面說(shuō)到的這個(gè)階段大概在什么時(shí)候呢,2005年前后,2007年我覺(jué)得已經(jīng)使用的很廣泛了,老的 CSDN 上應(yīng)該還能找到很多原始的報(bào)表標(biāo)簽帖子。
像老一批報(bào)表還有像金峰報(bào)表 Jreport、思達(dá)報(bào)表 StyleReport 等等在國(guó)內(nèi)也有一定的市場(chǎng)。早在 2010 年之前,有些報(bào)表廠商的收入規(guī)模就已經(jīng)突破了一個(gè)億,說(shuō)明基礎(chǔ)報(bào)表這個(gè)市場(chǎng)還是非常不錯(cuò)的。
那個(gè)時(shí)候的報(bào)表定位是什么,就是純粹的 Report 報(bào)表,通過(guò)程序從后臺(tái)數(shù)據(jù)庫(kù)中查詢(xún)返回的數(shù)據(jù)聚合 List 再到前端腳本頁(yè)面上綁定一下就生成了各種報(bào)表,實(shí)際上就是用在各個(gè)業(yè)務(wù)軟件系統(tǒng)之中的報(bào)表展示,還遠(yuǎn)遠(yuǎn)沒(méi)有到 商業(yè)智能BI分析這個(gè)層面。
并且還有大量的軟件開(kāi)發(fā)廠商實(shí)際上已經(jīng)具備了很強(qiáng)的報(bào)表能力,不過(guò)這些報(bào)表能力并沒(méi)有單獨(dú)拿出來(lái)作為報(bào)表產(chǎn)品在市面上運(yùn)營(yíng)而已。
?

逐步的,隨著前端技術(shù)、前端框架的完善,從傳統(tǒng)表格技術(shù)開(kāi)始到了各類(lèi)柱狀圖、條形圖、餅狀圖的可視化展示,到了這個(gè)階段,報(bào)表和商業(yè)智能BI的邊界越來(lái)越模糊。為什么?商業(yè)智能BI的報(bào)表展現(xiàn)能力也就和傳統(tǒng)報(bào)表效果大致相當(dāng),還沒(méi)有出現(xiàn)那種自助分析、自助拖拉拽就可以實(shí)現(xiàn)快速多維分析的能力。
講這么多主要想說(shuō)的是我們所看到的很多商業(yè)智能BI項(xiàng)目都是拿報(bào)表思維去實(shí)現(xiàn)的,就是 SQL 到數(shù)據(jù)集到前端展現(xiàn)。而真正的商業(yè)智能BI思維應(yīng)該是什么呢? 多維思維、模型思維,這一點(diǎn)決定了一個(gè) 商業(yè)智能BI 項(xiàng)目的最終走向,后面會(huì)具體講到這些點(diǎn)。
三、商業(yè)智能BI 和數(shù)據(jù)倉(cāng)庫(kù) Data Warehouse 有什么區(qū)別和聯(lián)系?
經(jīng)常會(huì)碰到有人問(wèn)商業(yè)智能BI和數(shù)據(jù)倉(cāng)庫(kù)有什么區(qū)別,實(shí)際上這個(gè)問(wèn)題的背后能反映出來(lái)一些朋友對(duì)商業(yè)智能BI的理解還是有些不準(zhǔn)確和偏差,這個(gè)問(wèn)題實(shí)際上從概念上把BI和數(shù)據(jù)倉(cāng)庫(kù)人為的割裂了。這種情況其實(shí)也比較正常,因?yàn)榇蠹覍?duì)商業(yè)智能BI的第一印象就是各種炫酷的可視化圖表、報(bào)表,再加上市面上有很多輕量的前端可視化商業(yè)智能BI分析工具,就造成大家對(duì)BI的認(rèn)知就停留在可視化這部分了。
準(zhǔn)確的來(lái)說(shuō),商業(yè)智能BI不僅僅包含前端可視化分析、報(bào)表展現(xiàn)的能力,更包含了底層數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)過(guò)程。Gartner 在上世紀(jì)九十年代就已經(jīng)提到了商業(yè)智能 Business Intelligence,它更多的認(rèn)為:BI是一種數(shù)據(jù)類(lèi)的技術(shù)解決方案,將許多來(lái)自不同企業(yè)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)提取有分析價(jià)值的數(shù)據(jù)進(jìn)行清洗、轉(zhuǎn)換和加載,就是抽取Extraction、轉(zhuǎn)換 Transformation、加載Loading 的ETL過(guò)程,最終合并到一個(gè)數(shù)據(jù)倉(cāng)庫(kù)中,按照一定的建模方式例如Inmon 的3NF 建模、Kimball 的維度建?;蛘邇烧叨加械幕旌鲜郊軜?gòu)模型,最終在這個(gè)基礎(chǔ)上再利用合適的分析展現(xiàn)工具來(lái)形成各種可視化的分析報(bào)表為企業(yè)的管理決策層提供數(shù)據(jù)決策支撐。

?
所以,可以從這里能夠看到數(shù)據(jù)倉(cāng)庫(kù)Data Warehouse 的位置是介于可視化報(bào)表和底層業(yè)務(wù)系統(tǒng)數(shù)據(jù)源之間的這一層,在整個(gè)商業(yè)智能BI項(xiàng)目解決方案中起到的是一個(gè)承上啟下的作用。如果把商業(yè)智能BI比作是一個(gè)人的話,上半身特別是臉這個(gè)部分就是顏值,下半身腳踏實(shí)地吸取大地的精華,中間這部分的腰腹核心、核心力量就是數(shù)據(jù)倉(cāng)庫(kù)。
那大家也會(huì)問(wèn)到,市面上不是有很多直接鏈接數(shù)據(jù)源就可以拖拉拽分析的商業(yè)智能BI工具產(chǎn)品嗎,不也一樣可以做商業(yè)智能BI分析報(bào)表嗎?這種獨(dú)立的、單獨(dú)的面向前端的商業(yè)智能BI分析工具,他們更多的定位是部門(mén)級(jí)和個(gè)人級(jí)的商業(yè)智能BI 分析工具,對(duì)于深層次的需要復(fù)雜數(shù)據(jù)處理、集成、建模等很多場(chǎng)景是無(wú)法解決的。最好的方式就是底層構(gòu)建一套完整的數(shù)據(jù)倉(cāng)庫(kù),把很多分析模型標(biāo)準(zhǔn)化,再利用這些前端商業(yè)智能BI分析工具結(jié)合起來(lái),這樣才能真正的把前端商業(yè)智能BI分析能力給釋放出來(lái)。
很多企業(yè)認(rèn)為只要買(mǎi)一個(gè)前端商業(yè)智能BI分析工具就可以解決企業(yè)級(jí)的商業(yè)智能BI所有問(wèn)題,這個(gè)看法實(shí)際上也不可行的??赡茉谧铋_(kāi)始分析場(chǎng)景相對(duì)簡(jiǎn)單,對(duì)接數(shù)據(jù)的復(fù)雜度不是很高的情況下這類(lèi)商業(yè)智能BI分析工具沒(méi)有問(wèn)題。但是在企業(yè)的商業(yè)智能BI項(xiàng)目建設(shè)有一個(gè)特點(diǎn),是一個(gè)螺旋式上升的建設(shè)過(guò)程。因?yàn)閷?duì)接的業(yè)務(wù)系統(tǒng)可能會(huì)越來(lái)越多,分析的深度和廣度會(huì)越來(lái)越多,數(shù)據(jù)的復(fù)雜度也會(huì)越來(lái)越有挑戰(zhàn)性,這個(gè)時(shí)候沒(méi)有一個(gè)很好的數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)支撐,光靠前端BI分析工具基本上是無(wú)法搞定的。

就像去中藥店抓藥一樣,之所以抓藥很快,是因?yàn)樵谧ニ幥?,別人已經(jīng)把各種原生的中藥材(原始數(shù)據(jù)源的數(shù)據(jù))分門(mén)別類(lèi)清理干凈放好了,這樣想怎么搭配藥材(維度指標(biāo)組合的可視化)就很快了。
這樣的企業(yè)在國(guó)內(nèi)有很多,也是因?yàn)閷?duì)商業(yè)智能BI理解的深度不夠?qū)е铝嗽谏虡I(yè)智能BI項(xiàng)目建設(shè)上一些方向性的錯(cuò)誤,最后s導(dǎo)致商業(yè)智能BI項(xiàng)目很難繼續(xù)推進(jìn)。
所以在企業(yè)中,我們需要明確我們的商業(yè)智能BI建設(shè)是面向企業(yè)級(jí)的還是個(gè)人和部門(mén)的分析工作。如果是個(gè)人數(shù)據(jù)分析師,使用這類(lèi)前端商業(yè)智能BI分析工具就足夠了。如果是需要構(gòu)建一個(gè)企業(yè)級(jí)的商業(yè)智能BI項(xiàng)目,就不能只關(guān)注前端可視化分析能力這個(gè)層面,更應(yīng)該關(guān)注到底層數(shù)據(jù)架構(gòu)的構(gòu)建,也就是數(shù)據(jù)倉(cāng)庫(kù)這個(gè)層面。
四、數(shù)據(jù)倉(cāng)庫(kù)的建模方法論 Kimball vs Inmon 以及混合架構(gòu)
?

數(shù)據(jù)倉(cāng)庫(kù)建模時(shí)商業(yè)智能BI項(xiàng)目建設(shè)中的重中之重,Inmon 的三范式 3NF 建模和 Kimball 的維度建模都是 商業(yè)智能BI 數(shù)據(jù)倉(cāng)庫(kù)建模的方法論,這兩種商業(yè)智能BI建模的方式有什么區(qū)別和聯(lián)系。
?