?原創(chuàng):陳思
BI系統(tǒng)質(zhì)量挑戰(zhàn)
BI(Business Intelligence)即商務智能,它是一套完整的解決方案,用來幫助企業(yè)更好地利用數(shù)據(jù)提高決策質(zhì)量的技術(shù)集合,是從大量的數(shù)據(jù)中鉆取信息與價值的過程。BI系統(tǒng)質(zhì)量至關(guān)重要,可以說沒有質(zhì)量保障的BI數(shù)據(jù)還不如沒有BI數(shù)據(jù)。而BI系統(tǒng)進行質(zhì)量保障存在著巨大的挑戰(zhàn),主要有以下幾點原因:
1.數(shù)據(jù)來源極其復雜,既有內(nèi)部各個產(chǎn)品線的數(shù)據(jù),又包含外部商業(yè)機構(gòu)數(shù)據(jù),主動采集數(shù)據(jù)等多種數(shù)據(jù),數(shù)據(jù)源頭質(zhì)量保障挑戰(zhàn)已經(jīng)比較大;
2.數(shù)據(jù)經(jīng)過多層計算,過程復雜,保證每一步都符合預期的成本較高;
3.數(shù)據(jù)口徑要求嚴格,稍有偏差可能會導致實際業(yè)務意義偏差巨大。
建設目標
鑒于之前出現(xiàn)的BI系統(tǒng)質(zhì)量問題,我們分析了BI質(zhì)量保證僅有開發(fā)同學自己進行時存在的漏洞,在平衡核心質(zhì)量和投入成本之后將以下三點作為核心建設目標,以進行系統(tǒng)化的建設:
1.形成質(zhì)量閉環(huán)體系,高效高質(zhì)量的可持續(xù)的迭代
2.實現(xiàn)P0級別報表全流程質(zhì)量把控,達到報表輸出0事故
3.形成數(shù)據(jù)質(zhì)量平臺,對數(shù)據(jù)全流程質(zhì)量進行跟蹤
接入前準備
為保證順利接入進行了必要的準備工作,其中執(zhí)行性的包括以下幾點:
1.對數(shù)據(jù)來源、數(shù)據(jù)邏輯以及抽象出的各種業(yè)務指標的口徑進行系統(tǒng)整理,并逐點與PM、RD同學進行同步確認,從而達到在知識層上理解是一直的目標。
2.核心技能SQL編寫能力的系統(tǒng)提升,需要具備基于口徑編寫完備SQL的能力。
3.準備后續(xù)進行自動化建設所需的語言與測試框架——Python、Avocado等。
體系建設
在已經(jīng)明確目標的情況下,根據(jù)需求的緊湊度,以及不妨礙正常發(fā)布的情況下,進行質(zhì)量體系的逐步建設.整體測試架構(gòu)如下,分為四層,分別是:
1.數(shù)據(jù)收集層
2.數(shù)據(jù)解析層
3.數(shù)據(jù)對比與Check
4.結(jié)果展示與警告

通過分層的方案建設實現(xiàn)了對BI系統(tǒng)深入測試,驗證過程分為以下幾個重要階段:
1.發(fā)布前驗證
在具備SQL編寫以及編程數(shù)據(jù)清洗能力后,優(yōu)先對報表口徑學習,具備輸出case形成對報表的測試能力.優(yōu)先針對高優(yōu)級別報表均具備質(zhì)量覆蓋,輸出case評審后進行數(shù)據(jù)驗證并維護SQL.數(shù)據(jù)驗證正確后,報表才能進行發(fā)布。
2.數(shù)據(jù)diff
建立報表環(huán)比diff監(jiān)控,準確找出報表發(fā)布時間點,歷史數(shù)據(jù)的diff項, 完成監(jiān)控報警建設。達到報表歷史數(shù)據(jù)diff及時通知,并給出diff明細。
3.自動化驗證
采用avocado測試框架,引入自動化case測試,保證發(fā)布數(shù)據(jù)的準確性,主要思路為:每個報表維護一組可用的驗證SQL。通過sql的結(jié)果,與平臺接口返回的數(shù)據(jù)做對比,驗證報表數(shù)據(jù)的準確性。

在有了整體設計思路之后,就是實戰(zhàn)的過程,基于采用的框架編寫API層,Lib層以及case層面的輸出,case調(diào)試并且運行成功后,就可以接入任務調(diào)度平臺。
case調(diào)試成功:

接入調(diào)度平臺運行:

執(zhí)行通過郵件:

失敗報警:

BI質(zhì)量建設應用擴展
完成BI質(zhì)量體系建設除了完成BI方向的目標外,作為具備線上各種維度和來源數(shù)據(jù)的BI系統(tǒng)可以支持多種質(zhì)量建設,其中我們進行了一系列的在線質(zhì)量全力數(shù)據(jù)的保障工作,具體過程如下:
1.將各個方向在線質(zhì)量業(yè)務目標轉(zhuǎn)化成數(shù)據(jù)指標
基于業(yè)務目標探討數(shù)據(jù)需求,明確滿足業(yè)務方向的數(shù)據(jù)輸出方案和形式。例如“線上要保證注冊成功的SLA>99%”,基于這個需要我們將BI數(shù)據(jù)中用戶注冊過程數(shù)據(jù)進行定時全量處理,將BI中過程數(shù)據(jù)抽取出來支持該指標的計算。
2.將業(yè)務指標轉(zhuǎn)化為可以執(zhí)行SQL
在能夠滿足需求的條件下,由各業(yè)務方向整理SQL語句且評審以保證數(shù)據(jù)輸出滿足要求。
3.在BI平臺執(zhí)行系統(tǒng)定時執(zhí)行核心質(zhì)量SQL以獲得全量在線質(zhì)量數(shù)據(jù)
基于python+Django,封裝數(shù)據(jù)接口,將各方向關(guān)注數(shù)據(jù)進行采集采集后,使用Pandas將結(jié)果進行表格化,通過郵件的方式發(fā)送給對應負責人。

寫在最后,感謝尊敬的大腿(張少華)與帥氣的男神(徐浩)的指導,希望此文章可以給大家?guī)硇┰S感悟。