BI系統(tǒng),即商業(yè)智能系統(tǒng),用來將企業(yè)或業(yè)務(wù)中現(xiàn)有的數(shù)據(jù)進(jìn)行有效的整合,快速準(zhǔn)確的提供報(bào)表并提供決策依據(jù),幫助企業(yè)做出明智的業(yè)務(wù)經(jīng)營決策。傳統(tǒng)的BI系統(tǒng)提供商有Oracle,IBM,Microsoft,MicroStrategy等。??
??圖1 暢思數(shù)據(jù)中心分層示意圖
??BI系統(tǒng)的挑戰(zhàn)在于數(shù)據(jù)量以及計(jì)算的效率。結(jié)合目前大數(shù)據(jù)方面的成就,這些問題已經(jīng)得到的較好的解決。有能力的企業(yè)現(xiàn)在完全可以自己搭建自有的BI系統(tǒng)。
??本文以暢思平臺(tái)BI系統(tǒng)為例為大家介紹下BI平臺(tái)的搭建。
??BI系統(tǒng)主要分為數(shù)據(jù)收集、ETL以及存儲(chǔ)入庫、任務(wù)調(diào)度、可視化等部分。
??1 數(shù)據(jù)收集
??數(shù)據(jù)收集需要考慮如下幾個(gè)問題。
??數(shù)據(jù)源有哪些?
??數(shù)據(jù)的收集方式?
??數(shù)據(jù)的時(shí)效性、準(zhǔn)確性、完整性?
??1.1 數(shù)據(jù)源
??數(shù)據(jù)源包括三大類:第一方數(shù)據(jù),第二方數(shù)據(jù),第三方數(shù)據(jù)。
??第一方數(shù)據(jù),主要是廣告主、媒體回傳的用戶行為數(shù)據(jù)。數(shù)據(jù)一般包括用戶注冊、登錄、關(guān)卡等事件信息,可以通過對(duì)此類數(shù)據(jù)的分析,為應(yīng)用運(yùn)營提供統(tǒng)計(jì)指標(biāo),指導(dǎo)運(yùn)營工作,如果與廣告投放數(shù)據(jù)聯(lián)合,可以進(jìn)行廣告及用戶后續(xù)效果的持續(xù)追蹤以及評(píng)估;
??第二方數(shù)據(jù),主要是廣告平臺(tái)展示、點(diǎn)擊、激活等數(shù)據(jù),這類數(shù)據(jù)可用于分析廣告平臺(tái)各個(gè)項(xiàng)目在各類媒體上的表現(xiàn)使用,對(duì)流量進(jìn)行評(píng)估,如果流量比較穩(wěn)定,亦可用于創(chuàng)建用戶畫像使用;
??第三方數(shù)據(jù)主要是其他平臺(tái)合作數(shù)據(jù),該類數(shù)據(jù)包括用戶標(biāo)簽合作接入,基本流量數(shù)據(jù)。
??1.2 數(shù)據(jù)收集
??第一方數(shù)據(jù)可通過應(yīng)用集成SDK采集、或者應(yīng)用方直接回調(diào)等方式進(jìn)行數(shù)據(jù)的收集。
??第二方數(shù)據(jù)主要是兩種方式:廣告SDK以及廣告API
??第三方數(shù)據(jù)一般采用API、第三方存儲(chǔ)(AWS S3, 阿里云存儲(chǔ))、RSYNC等方式進(jìn)行批量傳輸。
??1.3 數(shù)據(jù)的時(shí)效性、準(zhǔn)確性、完整性
??對(duì)于第一方數(shù)據(jù),一般按周期進(jìn)行傳輸,除非BI系統(tǒng)提供實(shí)時(shí)服務(wù),按周期傳輸?shù)臄?shù)據(jù)可以滿足絕大部分?jǐn)?shù)據(jù)分析的需求。
??而第二方數(shù)據(jù),由于平臺(tái)一般需要進(jìn)行實(shí)時(shí)的監(jiān)測,對(duì)數(shù)據(jù)的時(shí)效性以及準(zhǔn)確性,要求相對(duì)比較高,對(duì)于時(shí)效性,基本要達(dá)到實(shí)時(shí)傳輸。因?yàn)閷?shí)時(shí)傳輸經(jīng)常會(huì)由于網(wǎng)絡(luò)的問題,導(dǎo)致數(shù)據(jù)傳輸?shù)腻e(cuò)亂或者丟失,此時(shí)一般還需要引入離線機(jī)制進(jìn)行數(shù)據(jù)的再傳輸,以保證數(shù)據(jù)的準(zhǔn)確性以及完整性。
??一般來講,對(duì)于指標(biāo)或者質(zhì)量要求非常高的數(shù)據(jù)以及結(jié)果,一般采用離線傳輸和計(jì)算的方式,實(shí)時(shí)計(jì)算則提供具有指導(dǎo)意義的誤差再可容忍范圍之內(nèi)的服務(wù)。
??1.4解決方案示例
??以暢思廣告平臺(tái)為例,如圖2所示??
??圖2 日志收集示意圖
??第一方和第二方數(shù)據(jù)。離線分析,采用批量傳輸和獲取的方式進(jìn)行數(shù)據(jù)收集;實(shí)時(shí)分析,則使用Flume進(jìn)行數(shù)據(jù)的收集。第三方數(shù)據(jù),則通過第三方可靠性存儲(chǔ)作為媒介如阿里云、百度云、AWS等來進(jìn)行中轉(zhuǎn),對(duì)于第三方需要實(shí)時(shí)獲取信息的,則采用API的方式進(jìn)行通信。
??2 ETL
??Extract-Transform-Load的縮寫,在數(shù)據(jù)倉庫中對(duì)數(shù)據(jù)進(jìn)行抽取、轉(zhuǎn)換、并加載到數(shù)據(jù)倉庫中。其主要目的是對(duì)數(shù)據(jù)進(jìn)行清洗,并按照預(yù)先定義好的數(shù)據(jù)倉庫模型將數(shù)據(jù)進(jìn)行規(guī)整化,以便進(jìn)行后續(xù)的分析。
??現(xiàn)在市面是流行的ETL工具代表有: Kettle,Talend,Informatica, Datastage等。但對(duì)于平臺(tái)類的ETL,需要比較多的定制化操作,并且需要對(duì)數(shù)據(jù)進(jìn)行特殊的解析或者映射,這些特殊需求導(dǎo)致上述的ETL工具使用起來比較麻煩。所以大家一般會(huì)自己進(jìn)行ETL工具的定制開發(fā)。
??2.1 ETL需考慮的因素
??首先,確定數(shù)據(jù)倉庫的模型。要從倉庫的效率、兼容性、擴(kuò)展性等多方面進(jìn)行考慮。效率上考慮,把最經(jīng)常使用或者分析的字段以單獨(dú)列的形式設(shè)計(jì)到模型中,并對(duì)數(shù)據(jù)進(jìn)行時(shí)時(shí)間片等維度的切分;兼容性方面則一般將字段的類型設(shè)置為字符串;擴(kuò)展性方面,要保留足夠的字段或者特殊的兼容性較強(qiáng)的字段供將來使用。
??其次,要準(zhǔn)備好ETL使用的存儲(chǔ)以及計(jì)算框架。對(duì)于數(shù)據(jù)量較大的情況,建議基于Hadoop、Cassandra等文件系統(tǒng)進(jìn)行存儲(chǔ),Pregel、Yarn、Mesos等分布式計(jì)算框架進(jìn)行ETL的操作。
??第三,存儲(chǔ)的數(shù)據(jù)格式。使用原始的數(shù)據(jù)文件,還是使用壓縮的格式;對(duì)于原始的文件,一般的分布式計(jì)算平臺(tái)會(huì)自動(dòng)進(jìn)行切分,而對(duì)于部分壓縮格式,則不支持文件的切分。這時(shí)候就需要在存儲(chǔ)與計(jì)算效率之間進(jìn)行折中,如果集群存儲(chǔ)量有限,則使用壓縮文件,但可通過自動(dòng)切分文件然后壓縮上傳的方式來提高計(jì)算效率。
??第四,ETL數(shù)據(jù)索引信息。需要提供外部的索引信息來指導(dǎo)分析人員進(jìn)行數(shù)據(jù)的獲取以及分析。一般采用的方式是在數(shù)據(jù)庫中存儲(chǔ)數(shù)據(jù)倉庫各個(gè)分區(qū)的信息供分析人員查詢。
??2.2 暢思ETL
??暢思的ETL主要是基于Hive,建立數(shù)據(jù)表,數(shù)據(jù)表中的各個(gè)字段是廣告平臺(tái)或者接入方數(shù)據(jù)映射之后的字段,并預(yù)留Map結(jié)構(gòu)體字段滿足將來的擴(kuò)展需求??紤]到數(shù)據(jù)倉庫縱向、橫向分析的可能,對(duì)數(shù)據(jù)進(jìn)行平臺(tái)、時(shí)間、類型的切分。
??在存儲(chǔ)以及計(jì)算框架方面,選用的hadoop生態(tài)圈的相關(guān)實(shí)現(xiàn)。存儲(chǔ)使用hdfs或者h(yuǎn)base,計(jì)算框架則采用Yarn。
??存儲(chǔ)的數(shù)據(jù)格式。目前壓縮格式較多,例如gz, scrapy, lzo,bz2等,考慮到存儲(chǔ)容量尤其是IO方面的需求,暢思對(duì)原始數(shù)據(jù)進(jìn)行了最高級(jí)別的壓縮,并通過對(duì)壓縮數(shù)據(jù)分塊來提高計(jì)算效率。而對(duì)于數(shù)據(jù)倉庫中的數(shù)據(jù),則采用lzo壓縮,該壓縮Mapreduce可進(jìn)行自動(dòng)切分。
??數(shù)據(jù)索引信息。使用mysql進(jìn)行索引的存儲(chǔ),并在全局記錄數(shù)據(jù)倉庫數(shù)據(jù)的開始結(jié)束時(shí)間。
??3 BI任務(wù)調(diào)度系統(tǒng)
??BI系統(tǒng)需要支持OLAP,提供復(fù)雜的分析操作,并提供直觀易懂的查詢結(jié)果,為決策提供支撐。如何從數(shù)據(jù)倉庫中快速有效的分析提取結(jié)果,是任務(wù)調(diào)度系統(tǒng)需要解決的問題。
??3.1 考慮因素
??首先,以什么方式讓分析人員調(diào)用。SQL的方式最為簡潔,并且因?yàn)榇蠹覍?duì)關(guān)系型數(shù)據(jù)庫比較熟悉,并且SQL在語法以及語意方面都比較完善,培訓(xùn)資料較多。分析人員可以以較小的代價(jià)入門。
??第二,權(quán)限控制。對(duì)數(shù)據(jù)源、數(shù)據(jù)表等進(jìn)行權(quán)限控制,防止用戶越界訪問。
??第三,結(jié)果存儲(chǔ)。存儲(chǔ)要穩(wěn)健,并且能提供高并發(fā)的讀寫請(qǐng)求。
??第四,結(jié)果反饋。分析人員獲取結(jié)果之后,以什么方式呈現(xiàn)給分析人員,出錯(cuò)之后如何處理。
??第五,任務(wù)調(diào)度,“調(diào)度”最為重要,需要考慮任務(wù)是否需要周期性調(diào)度,并根據(jù)任務(wù)的優(yōu)先級(jí)、任務(wù)等待的時(shí)間等因素考慮任務(wù)調(diào)度的順序。
??3.2 暢思任務(wù)調(diào)度系統(tǒng),如圖3所示
??暢思調(diào)度平臺(tái)以交互的方式提供任務(wù)提交功能。交互界面劃分權(quán)限,用戶通過界面操作將指定優(yōu)先級(jí)及必須字段操作轉(zhuǎn)化為以SQL命令為主的任務(wù)序列提請(qǐng)到任務(wù)后臺(tái)。
??在任務(wù)調(diào)度方面,通過任務(wù)的優(yōu)先級(jí)、調(diào)度周期等進(jìn)行任務(wù)的分發(fā),把不同的級(jí)別的任務(wù)分發(fā)到不同的消息隊(duì)列中。任務(wù)執(zhí)行端則從消息隊(duì)列中獲取執(zhí)行任務(wù)。
??任務(wù)調(diào)度的結(jié)果,則根據(jù)用戶指定的方式進(jìn)行存儲(chǔ)或操作。如果指定為郵件發(fā)送,如果執(zhí)行成功,則將結(jié)果以郵件的方式發(fā)送給配置的相關(guān)人員;如果是存儲(chǔ)入庫,則將結(jié)果存儲(chǔ)到mysql,并根據(jù)需要加載到緩存,供后續(xù)分析或者展示。
??4 可視化系統(tǒng)
??可視化統(tǒng)除了提供報(bào)表的展示、導(dǎo)出等功能,還要提供多維度、同比、環(huán)比等對(duì)比分析功能。BI系統(tǒng)產(chǎn)生的結(jié)果,價(jià)值的體現(xiàn)很大程度上體現(xiàn)在可視化方面。最終的可視化版本需要與產(chǎn)品、運(yùn)營進(jìn)行需求調(diào)研之后,根據(jù)業(yè)務(wù)的實(shí)際需要,提煉需要展示的維度。
基于家族經(jīng)銷商生意,自身作為經(jīng)銷商業(yè)主,從事商品經(jīng)銷行業(yè)二十余年,期間在數(shù)個(gè)著名企業(yè)兼任業(yè)務(wù)經(jīng)理及培訓(xùn)師等職。
悅頓體育照明品牌創(chuàng)始人,20年來專注于各級(jí)各類體育運(yùn)動(dòng)場館的專業(yè)化照明!點(diǎn)亮精彩,照亮運(yùn)動(dòng)!有需要的朋友攜手合作!賬號(hào)為微信號(hào),運(yùn)動(dòng)健康,你我共享!
展覽策劃 | 項(xiàng)目管理 | 品牌展示 深耕展覽行業(yè)20年 | 累計(jì)服務(wù)客戶2000+ | 專注品牌文化與商業(yè)價(jià)值融合(13918729898同V)