?
《數(shù)據(jù)定義規(guī)范》
? ? ?上節(jié)我們深入分析了痛點(diǎn)產(chǎn)生的原因陕凹,并規(guī)劃了階段式的整體解決方案钞馁,主要是:從管理組織規(guī)范->數(shù)據(jù)定義規(guī)范->建模規(guī)范->研發(fā)規(guī)范->規(guī)范化推進(jìn) 分步驟有序建立數(shù)據(jù)規(guī)范并落地。接下來我們對每個(gè)環(huán)節(jié)進(jìn)行詳細(xì)說明汽摹,其中“管理組織規(guī)范”已經(jīng)在上節(jié)闡述了其必要性和職責(zé)范圍,本章節(jié)就不再贅述了,本節(jié)重點(diǎn)放在“數(shù)據(jù)定義規(guī)范”這個(gè)環(huán)節(jié)煎饼。
? ?數(shù)據(jù)定義規(guī)范的作用是使得數(shù)據(jù)在定義上進(jìn)行規(guī)范,各個(gè)業(yè)務(wù)線對該規(guī)范達(dá)成一致校赤,來更好的進(jìn)行數(shù)據(jù)的管理吆玖,加速數(shù)據(jù)定位,消除數(shù)據(jù)的二義性马篮。
? ?舉個(gè)例子:數(shù)據(jù)倉庫存在如下兩張登錄表login_1沾乘,login_2,其中兩張表均有l(wèi)ogin_num 這個(gè)字段浑测,我的業(yè)務(wù)需求是按用戶名來統(tǒng)計(jì)每天的總登錄次數(shù)翅阵,那么我到底是使用login_1還是login_2呢?或是我能直接取已經(jīng)存在的login_num來作為我需求中需要的指標(biāo)值嗎尽爆?不能怎顾,因?yàn)槲宜吹降谋砻Q是不規(guī)范的,且login_num這個(gè)字段到底代表什么含義漱贱,也是缺失的槐雾,這就是表和指標(biāo)不規(guī)范帶來的無法快速定位需要的數(shù)據(jù),數(shù)據(jù)二義性的典范幅狮。
? 整個(gè)數(shù)據(jù)定義規(guī)范分為兩塊:表的規(guī)范化定義和指標(biāo)的規(guī)范化定義
1.表的規(guī)范化定義
? 如上面建設(shè)的login_1和login_2募强,有可能是代表了重復(fù)建設(shè)的兩個(gè)表,也有可能代表著不同業(yè)務(wù)的登錄表崇摄,或是其他的情況擎值,那如何通過規(guī)范化來區(qū)分這些情況呢?經(jīng)過研究逐抑,我們的表名稱可以由以下幾個(gè)部分進(jìn)行組合:?表名=主題域+自定義+更新頻率:其中主題域鸠儿、更新頻率為有限集合,使用數(shù)據(jù)字典維護(hù),最終可自動生成表名稱进每;
A. 主題域:
? ? 在闡述主題域之前汹粤,先說說主題的概念,主題主要是將經(jīng)營的業(yè)務(wù)數(shù)據(jù)進(jìn)行綜合田晚,歸類和分析的一個(gè)抽象概念嘱兼,數(shù)據(jù)倉庫中的數(shù)據(jù)是面向主題組織的,每一個(gè)主題對應(yīng)一個(gè)分析的領(lǐng)域贤徒,比如打車業(yè)務(wù)中芹壕,“客戶行為數(shù)據(jù)”就是一個(gè)主題。
? ?主題域就是緊密相關(guān)聯(lián)的主題的集合接奈,比如“客戶行為數(shù)據(jù)”主題和“客戶轉(zhuǎn)化數(shù)據(jù)”這兩個(gè)主題都在“客戶數(shù)據(jù)”這個(gè)大的主題域下踢涌。
主題域的劃分主要有如下幾個(gè)方法:
? ? (1)按照業(yè)務(wù)過程劃分:按照公司經(jīng)營的業(yè)務(wù)范圍,將業(yè)務(wù)按照模塊垂直拆分成幾大主題域鲫趁,而每個(gè)主題域又可以拆分為多個(gè)主題斯嚎,其中主題域,以及主題域和主題映射關(guān)系挨厚,均可維護(hù)在數(shù)據(jù)字典中。
? ? (2)按照功能塊來劃分:比如短視頻app中的“聊天域”糠惫,“廣告域”疫剃,其中“廣告域”下面又可以分為“流量分析”,“客戶分析”等主題;
? ? (3)按照部分來劃分:按照部門職責(zé)來劃分對應(yīng)的主題域硼讽,比如“技術(shù)域”,“銷售域”等巢价;
? ? ?建議采用按照業(yè)務(wù)過程來拆分主題域,這樣表名帶有主題域信息固阁,就能知道該表所屬的業(yè)務(wù)范圍了壤躲,為了防止表名稱過長,表名里面攜帶主題域的縮寫信息备燃,而對應(yīng)的主題信息作為表的附屬信息碉克,通過系統(tǒng)記錄到后臺中進(jìn)行維護(hù)。
? ? 這里需要注意的是并齐,由于業(yè)務(wù)在不斷發(fā)展漏麦,主題域在初期劃分的時(shí)候很可能不是一個(gè)完整全面的集合,這個(gè)可以后期進(jìn)行迭代升級補(bǔ)充即可况褪。
B.自定義:
? ?除了用主題限定表名稱外撕贞,還需要額外自定義信息來補(bǔ)充表的含義,自定義部分是區(qū)分同一主題下不同表的業(yè)務(wù)意義的测垛,所以這塊需要凸顯出表的業(yè)務(wù)含義捏膨,如user_login_log表,表示用戶登錄日志食侮,admin_login_log表号涯,表示管理員登錄日志目胡。
? 自定義標(biāo)簽名命名規(guī)范遵從DBA發(fā)布的庫表設(shè)計(jì)命名規(guī)范:表名使用小寫字母,“_”分割诚隙,不超過16個(gè)字符讶隐,使用名詞且見名知意。不使用temp久又、old巫延、new等帶有誤導(dǎo)性的關(guān)鍵詞作為表名的一部分。
C.更新頻率:
? ?在數(shù)據(jù)字典中可以維護(hù)其表的更新頻率全集地消,如:按小時(shí)更新的炉峰,則表名后綴為hour,按天更新的脉执,表名后綴帶day疼阔。
? ? 以上就是表名稱的規(guī)范化的制定,有人會疑惑:表名稱規(guī)范對應(yīng)的3個(gè)部分半夷,其中主題和更新頻率是數(shù)據(jù)字典維護(hù)的婆廊,用戶直接選擇的,但是自定義部分仍然會存在用戶定義成login_1巫橄,login_2淘邻,仍然會存在歧義和重復(fù),對于這個(gè)部分湘换,我們主要做了以下工作來規(guī)避:
(1)對規(guī)范化定義在各個(gè)業(yè)務(wù)組進(jìn)行宣講宾舅,各業(yè)務(wù)組leader對組員進(jìn)行規(guī)約,在理解上達(dá)成一致彩倚,盡可能規(guī)避風(fēng)險(xiǎn)筹我;
(2)通過自動化手段檢測和約束自定義表名稱的規(guī)范化:如維護(hù)一個(gè)黑名單,不允許出現(xiàn)_1,old?這樣的短語作為表名稱的一部分帆离;
(3)在流程上增加審核機(jī)制:對新增的表由數(shù)據(jù)管理組人員統(tǒng)一進(jìn)行審核蔬蕊,通過后再在線上環(huán)境進(jìn)行創(chuàng)建;
? ? 通過以上三個(gè)步驟盯质,可有效規(guī)避表的不規(guī)范問題袁串,整個(gè)過程涉及到的人員和環(huán)節(jié)較多,所以需要大家的通力合作呼巷,才能最終達(dá)到規(guī)范化的目標(biāo)囱修;
? ? ?仍然以電商領(lǐng)域?yàn)槔乙獎?chuàng)建一個(gè)用戶基礎(chǔ)信息表王悍,且按天更新破镰,則定義的規(guī)范化表名稱為:
? acct_baseinfo_day,其中acct表示客戶主題,baseinfo為自定義,day為更新頻率鲜漩。
2.指標(biāo)的規(guī)范化定義
? ? 數(shù)據(jù)指標(biāo)是指在業(yè)務(wù)中將某個(gè)事件量化源譬,數(shù)字化來衡量業(yè)務(wù)的好壞,揭示出產(chǎn)品用戶的行為和業(yè)務(wù)水平狀況孕似,指導(dǎo)我們的業(yè)務(wù)運(yùn)營踩娘,如在某款打車APP應(yīng)用中,日活作為一個(gè)數(shù)據(jù)指標(biāo)喉祭,?表示一天內(nèi)日均活躍去重設(shè)備數(shù)养渴,日新增注冊用戶量指標(biāo),則統(tǒng)計(jì)一天內(nèi)安裝應(yīng)用后泛烙,注冊APP的用戶數(shù)理卑。
? ?為什么要進(jìn)行指標(biāo)的規(guī)范化定義?主要是為了防止指標(biāo)的重復(fù)性建設(shè)和二義性蔽氨,如在最開始出現(xiàn)的例子中藐唠,數(shù)倉中的兩張表login_1,login_2鹉究,均有l(wèi)ogin_num這個(gè)字段宇立,但是login_num到底代表什么業(yè)務(wù)含義,是否重復(fù)建設(shè)的自赔,這些都不得而知泄伪,所以我們需要從指標(biāo)的定義上面來制定一些規(guī)范,遵循這樣的規(guī)范后匿级,可以有效控制指標(biāo)的重復(fù)建設(shè)和二義性問題。
? 指標(biāo)是依附于數(shù)據(jù)表而存在的染厅,并且指標(biāo)也是從數(shù)據(jù)表中統(tǒng)計(jì)而來痘绎,通過對已有的指標(biāo)進(jìn)行分解,我們發(fā)現(xiàn)每個(gè)指標(biāo)都可以按照業(yè)務(wù)限定+統(tǒng)計(jì)粒度+統(tǒng)計(jì)周期+原子指標(biāo)進(jìn)行分解肖粮,這4個(gè)部分均可以根據(jù)自身業(yè)務(wù)來用數(shù)據(jù)字典進(jìn)行維護(hù)孤页,數(shù)據(jù)字典作為有限集合,可以很好的統(tǒng)一指標(biāo)的定義涩馆,通過這種結(jié)構(gòu)化指標(biāo)設(shè)計(jì)來消除二義性行施,統(tǒng)一數(shù)據(jù)口徑:
?從業(yè)務(wù)角度來分析這4個(gè)部分,舉個(gè)例子:在打車APP場景下魂那,統(tǒng)計(jì)華中地區(qū)每個(gè)公司日活指標(biāo)
A.業(yè)務(wù)限定:
? ?表示該指標(biāo)統(tǒng)計(jì)的業(yè)務(wù)范圍蛾号,例子中的“華中地區(qū)”即為業(yè)務(wù)限定;
B.統(tǒng)計(jì)粒度:
? ?即統(tǒng)計(jì)的維度信息涯雅,例子中的統(tǒng)計(jì)粒度為“公司”維度統(tǒng)計(jì)鲜结;
C.統(tǒng)計(jì)周期
? ?統(tǒng)計(jì)周期可以為按日,按周,按月等精刷,表示該指標(biāo)的時(shí)間屬性拗胜,例子中的統(tǒng)計(jì)周期是“按日”;
D.原子指標(biāo)
? 原子指標(biāo)表示不可再進(jìn)行拆分的最細(xì)粒度的指標(biāo)怒允,例子中的對應(yīng)的原子指標(biāo)為“活躍數(shù)”埂软,在算法上表現(xiàn)為APP用戶去重計(jì)算所得;
? ?回到上面的例子纫事,采用這4部分進(jìn)行拆解后勘畔,該指標(biāo)經(jīng)過規(guī)范化定義為:華中地區(qū)_公司維度_按天_活躍數(shù),在開發(fā)人員通過系統(tǒng)平臺添加這種規(guī)范化指標(biāo)后儿礼,并和規(guī)范化表中的字段列進(jìn)行綁定后咖杂,那么數(shù)據(jù)分析人員在使用時(shí)就能快速準(zhǔn)確定位到該指標(biāo),數(shù)據(jù)開發(fā)人員在進(jìn)行開發(fā)時(shí)候也能知道系統(tǒng)中已經(jīng)存在該指標(biāo)蚊夫,也就不會再進(jìn)行二次開發(fā)了诉字,即使開發(fā)人員在定義指標(biāo)時(shí)候沒有查重,其在平臺上添加的時(shí)候知纷,平臺會進(jìn)行檢測壤圃,發(fā)現(xiàn)已經(jīng)存在一樣定義的指標(biāo),會拒絕創(chuàng)建該指標(biāo)琅轧。通過這種方式來保障指標(biāo)的規(guī)范化伍绳。
?以上為數(shù)據(jù)規(guī)范化定義的內(nèi)容,主要包含數(shù)據(jù)表的規(guī)范化定義和數(shù)據(jù)指標(biāo)的規(guī)范化定義乍桂,我們來回顧下重點(diǎn):
?(1)數(shù)據(jù)表的規(guī)范化定義:表名=主題+自定義+更新頻率:其中主題冲杀、更新頻率為有限集合,使用數(shù)據(jù)字典維護(hù)睹酌,最終可自動生成表名稱权谁。其中自定義部分要契合業(yè)務(wù)含義,不能隨意填寫憋沿;可以通過文中提及的管理手段和工具來規(guī)避亂建的風(fēng)險(xiǎn)旺芽;
(2)數(shù)據(jù)指標(biāo)的規(guī)范化定義:指標(biāo)=?業(yè)務(wù)限定+統(tǒng)計(jì)粒度+統(tǒng)計(jì)周期+原子指標(biāo),4個(gè)部分均可以采用有限集合進(jìn)行限定辐啄,可通過平臺自動檢測等手段避免重復(fù)建設(shè)風(fēng)險(xiǎn)采章;