<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何理解數(shù)據(jù)質(zhì)量?

          共 4270字,需瀏覽 9分鐘

           ·

          2020-09-24 23:09

          數(shù)據(jù)質(zhì)量該如何理解

          |0x00 題外話:架構(gòu)推導(dǎo)思路

          說起數(shù)據(jù)質(zhì)量,其實(shí)是一個(gè)很寬泛的問題,類似于寫數(shù)據(jù)建模一樣,是一個(gè)抽象概念為主的事情,對(duì)于程序員群體來說,總是難以解答和回答的。這里針對(duì)數(shù)據(jù)質(zhì)量等類似的、在數(shù)據(jù)倉庫平臺(tái)中必須提及的概念,提供一種解答的思路,就是架構(gòu)推導(dǎo)理論

          先說一下基本的架構(gòu)推導(dǎo)理論。根據(jù)ISO/IEC 42010:20072中的定義,架構(gòu) = 組件模塊+關(guān)聯(lián)關(guān)系+約束&指導(dǎo)原則。我們用一張圖來解釋架構(gòu)在系統(tǒng)中的作用:

          從上圖可以看出,架構(gòu)是介于產(chǎn)品和業(yè)務(wù)之間的橋梁,從任意維度出發(fā),通過架構(gòu),能夠推導(dǎo)出另一維度的相關(guān)信息。因而,架構(gòu)的推導(dǎo)也有兩種思路:自頂向下和自底向上

          先說一下自頂向下的思路:假設(shè)我們目前有一個(gè)問題“豬為什么適合當(dāng)寵物”,我們可以設(shè)想一下受眾的疑問,從觀察者的角度出發(fā)總結(jié)出幾條經(jīng)驗(yàn),例如性格好、身材好和用途多。在總結(jié)出基本結(jié)論的基礎(chǔ)上,我們?cè)龠M(jìn)行深一步的挖掘,例如“為什么豬的性格好”,我們可能得出“因?yàn)樨i的性格很溫順”,再例如“為什么豬的身材好”,我們可能得出“因?yàn)樨i的皮膚白、屁股翹”。由此我們?cè)籴槍?duì)每一個(gè)細(xì)節(jié)深挖,就得到了我們要的系統(tǒng)架構(gòu)細(xì)節(jié)。用一張圖描述這個(gè)問題,如下:

          再說一下自底向上的思路:假設(shè)我們目前有很多的用例集合,例如“我們需要監(jiān)控用戶瀏覽頁面的行為”、“用戶在頁面中的某種點(diǎn)擊行為需要記錄”、“點(diǎn)擊行為需要與展現(xiàn)行為進(jìn)行關(guān)聯(lián)”,等等。在此基礎(chǔ)上,我們將大段的產(chǎn)品文檔進(jìn)行梳理,抽象出幾個(gè)關(guān)鍵的概念模型,例如“產(chǎn)品需要分別統(tǒng)計(jì)點(diǎn)擊和展現(xiàn)日志”、“點(diǎn)擊和展現(xiàn)日志需要通過某種ID進(jìn)行關(guān)聯(lián)”這樣的架構(gòu)概念,最后按照系統(tǒng)的職責(zé),設(shè)定好一個(gè)具體的思路,并分別實(shí)現(xiàn)。用一張圖描述這個(gè)問題,如下:

          通過這兩種方式,我們可以先采用自底向上的方式,來分拆產(chǎn)品描述的細(xì)節(jié),總結(jié)出初步的觀點(diǎn),再按照程序員的思路進(jìn)行自頂向下的拆分,最后再進(jìn)行一輪自底向上的總結(jié),基本上就可以確定一套系統(tǒng)應(yīng)該有的架構(gòu)和細(xì)節(jié)。

          說了這么多,其實(shí)核心思想很簡單,針對(duì)任何一類問題,都有兩種思考它的方法:自頂向下和自底向上。在此基礎(chǔ)上,可以多次組合這兩種方法,來得到一個(gè)問題完整的多方面回答。

          |0x01 從程序員視角看數(shù)據(jù)質(zhì)量

          那么數(shù)據(jù)質(zhì)量應(yīng)該怎么思考,首先從程序員的角度出發(fā),進(jìn)行自底向上總結(jié)。

          第一步,從程序員的日常工作出發(fā)。數(shù)據(jù)倉庫工作中,開發(fā)占了絕大部分的比重,因此代碼規(guī)范肯定是非常有必要的,其次應(yīng)該是具體技術(shù)的應(yīng)用細(xì)節(jié),例如注意數(shù)據(jù)傾斜等問題,再次要對(duì)業(yè)務(wù)的概念非常熟悉,避免與產(chǎn)品思路上的差異,最后就是要熟練應(yīng)用各種開發(fā)工具。把這些事情的各種細(xì)節(jié)做總結(jié),升華一下概念,就是開發(fā)質(zhì)量

          第二步,從配合人員的工作出發(fā)。如果團(tuán)隊(duì)稍微大一些的話,肯定有相應(yīng)的測(cè)試或者運(yùn)維人員,對(duì)于我們開發(fā)的代碼和運(yùn)行進(jìn)行配合。例如業(yè)務(wù)邏輯的二次check、數(shù)據(jù)的運(yùn)行結(jié)果之間一致性是否有保障,同時(shí)如果已開發(fā)的過程存在了問題,如何回溯歷史數(shù)據(jù)、優(yōu)化老代碼也屬于這個(gè)范疇。總結(jié)一下,就是需要測(cè)試的配合。

          第三步,從流程角度出發(fā)避免人為失誤。基本上正規(guī)一些的公司都會(huì)強(qiáng)調(diào)上線規(guī)范,做好數(shù)據(jù)校驗(yàn)、回滾方案、上下游監(jiān)控等工作。

          第四步,從維護(hù)角度出發(fā)及時(shí)發(fā)現(xiàn)問題。數(shù)據(jù)倉庫其實(shí)最主要的一個(gè)問題,就是針對(duì)每一個(gè)問題,都要有相應(yīng)的開發(fā)人員來檢查問題,因此要有詳細(xì)的值周規(guī)約,能夠在第一時(shí)間出問題時(shí)有人介入。此外還需要配合各種完善的報(bào)警與監(jiān)控平臺(tái),針對(duì)數(shù)據(jù)倉庫日常的整體狀況進(jìn)行一個(gè)全面的監(jiān)控

          總結(jié)這四個(gè)細(xì)節(jié)問題的匯總,可以得到四個(gè)角度的回答:易讀易擴(kuò)展易維護(hù);上線無失誤;報(bào)警及時(shí)處理;業(yè)務(wù)邏輯清晰。這四條其實(shí)就可以看作是數(shù)據(jù)質(zhì)量的一個(gè)大的概念,用一張圖來總結(jié)更為清晰一些:


          |0x02 從理論層面看數(shù)據(jù)質(zhì)量

          雖然說從程序員的角度出發(fā),數(shù)據(jù)質(zhì)量的問題描述的已經(jīng)比較清晰了,但是對(duì)于非數(shù)據(jù)開發(fā)的程序員,以及產(chǎn)品和運(yùn)營人員來說,這些還是有些難以讀懂。因此很多時(shí)候要求我們用更抽象的角度出發(fā),來進(jìn)行問題的拆解。這里常見的描述問題方式,參照CAP與BASE原則,我們可以仿照別人的概念,來組織和細(xì)化一個(gè)屬于我們自己的概念,這里也算是自頂向下思路的一種實(shí)現(xiàn)。

          從筆者自身的角度出發(fā),我總結(jié)了大概八條原則,詳情如下:

          1. 數(shù)據(jù)的完整性:數(shù)據(jù)的完整性比較易于理解,主要作用在數(shù)據(jù)倉庫架構(gòu)中的數(shù)據(jù)采集環(huán)節(jié)中,對(duì)應(yīng)到數(shù)據(jù)分層理論是DWD層,例如要剔除掉數(shù)據(jù)的缺失信息,注意采集過程中的數(shù)據(jù)偏移現(xiàn)象并糾正,等等;

          2. 數(shù)據(jù)的準(zhǔn)確性:數(shù)據(jù)的準(zhǔn)確性不太常見,但比較關(guān)鍵,例如記錄消費(fèi)金額的信息不能為負(fù)值,要加入校驗(yàn)邏輯以防止業(yè)務(wù)部門的數(shù)據(jù)修正操作,對(duì)應(yīng)到數(shù)據(jù)分層理論是DWD層,另外需要引入反作弊系統(tǒng)的支持,過濾掉那些無效的作弊數(shù)據(jù),防止統(tǒng)計(jì)結(jié)果出現(xiàn)偏差,對(duì)應(yīng)到數(shù)據(jù)分層理論是ODS層,;

          3. 數(shù)據(jù)的一致性:數(shù)據(jù)的一致性主要作用在離線開發(fā)環(huán)節(jié)中,對(duì)應(yīng)的數(shù)據(jù)分層理論是DWS層,針對(duì)同一主題下的數(shù)據(jù)統(tǒng)計(jì),確保統(tǒng)計(jì)的數(shù)據(jù)源是一致的,例如在搜索引擎系統(tǒng)中,由于搜索日志、廣告展現(xiàn)日志是分開記錄的,那么統(tǒng)計(jì)廣告的展現(xiàn)量應(yīng)該以廣告展現(xiàn)日志為基準(zhǔn)進(jìn)行統(tǒng)計(jì),盡管搜索日志帶有廣告展示的信息,但它的統(tǒng)計(jì)結(jié)果會(huì)因?yàn)楦鞣N問題與廣告展現(xiàn)日志的結(jié)果對(duì)不上,這里不可以采信;

          4. 數(shù)據(jù)的及時(shí)性:比較完整一些的數(shù)據(jù)平臺(tái)都包括了實(shí)時(shí)數(shù)據(jù)統(tǒng)計(jì)、小時(shí)級(jí)數(shù)據(jù)統(tǒng)計(jì)及天級(jí)數(shù)據(jù)統(tǒng)計(jì),其實(shí)數(shù)據(jù)準(zhǔn)時(shí)產(chǎn)出也算是數(shù)據(jù)質(zhì)量原則的一部分,應(yīng)該每天早上8點(diǎn)統(tǒng)計(jì)好前一天的數(shù)據(jù),如果你延遲到了10點(diǎn),肯定會(huì)有很多客戶投訴你,盡管數(shù)據(jù)是準(zhǔn)確的,但這種引起客戶投訴的情況,也需要?dú)w到數(shù)據(jù)質(zhì)量原則中來;

          5. 數(shù)據(jù)的安全性:假設(shè)團(tuán)隊(duì)規(guī)模較大,涉及了多個(gè)業(yè)務(wù)線的數(shù)據(jù),那么權(quán)限與安全問題也需要值得注意,因?yàn)橄M(fèi)金額這一類的數(shù)據(jù),在任何一家公司都屬于敏感信息,在對(duì)外暴露時(shí)需要做脫敏的處理,提供點(diǎn)擊展現(xiàn)等信息也應(yīng)該有權(quán)限申請(qǐng)的步驟,這個(gè)環(huán)節(jié)既可以作用在數(shù)據(jù)分層理論的ADS層,也可以作用在DWS層;

          6. 數(shù)據(jù)的自查性:數(shù)據(jù)倉庫并不是說我開發(fā)好了,就放在那里不管了,也不能說我需要指定一個(gè)人,天天去盯著有沒有問題,數(shù)據(jù)倉庫的架構(gòu)中應(yīng)該有對(duì)自身運(yùn)行情況自動(dòng)檢查的特性,作用在數(shù)據(jù)分層理論的ADS層,例如在重點(diǎn)步驟之后添加校驗(yàn)環(huán)節(jié),統(tǒng)計(jì)同比/環(huán)比信息,波動(dòng)過大時(shí)主動(dòng)報(bào)警等;

          7. 數(shù)據(jù)的周期性:數(shù)據(jù)質(zhì)量不僅與開發(fā)過程密切相關(guān),也與存儲(chǔ)數(shù)據(jù)的硬件息息相關(guān),在很多場(chǎng)景下,由于服務(wù)器資源的有限增長與數(shù)據(jù)資產(chǎn)的無限增加,必然到了一定的時(shí)間就會(huì)產(chǎn)生成本壓力,因此定期刪除無用數(shù)據(jù),針對(duì)一些冷門數(shù)據(jù)做極限壓縮,都是有效保障數(shù)據(jù)長期穩(wěn)定運(yùn)行的基石;

          8. 數(shù)據(jù)的可追蹤性:數(shù)據(jù)的可追蹤性,與元數(shù)據(jù)平臺(tái)的搭建息息相關(guān),可以說因?yàn)橛辛嗽獢?shù)據(jù)平臺(tái),能夠看到每一個(gè)過程的上下游血緣信息,因此在排查問題時(shí),能夠快速及時(shí)定位出問題的步驟,這非常關(guān)鍵。

          |0x03 從架構(gòu)的環(huán)節(jié)看數(shù)據(jù)質(zhì)量

          但其實(shí)總結(jié)出理論還是很抽象,一些Boss或者Leader會(huì)要求你結(jié)合具體的場(chǎng)景來解釋這些概念,這個(gè)時(shí)候從一次普通的業(yè)務(wù)開發(fā)出發(fā),完整的闡述從數(shù)據(jù)采集、同步、開發(fā),到最后的數(shù)據(jù)展現(xiàn),我們都做了哪些事情,就十分有必要了,這也是從架構(gòu)角度看數(shù)據(jù)質(zhì)量如何保障的具體實(shí)現(xiàn)。

          首當(dāng)其沖的是業(yè)務(wù)信息的變更,例如增加某種統(tǒng)計(jì)字段,或者是重新改變某種指標(biāo)的計(jì)算方式。業(yè)務(wù)信息的變化不僅是需要開發(fā)人員的主動(dòng)介入,也需要平臺(tái)工具的相關(guān)支持。例如Mysql數(shù)據(jù)庫表發(fā)生信息變更時(shí),通過Canal等組件可以感知數(shù)據(jù)表的DDL變化情況,離線根據(jù)DDL信息變更對(duì)應(yīng)Hive表的信息。

          其次是代碼提交的校驗(yàn)環(huán)節(jié),因?yàn)閿?shù)據(jù)質(zhì)量是一個(gè)很冰冷的詞匯,代碼出了問題就是質(zhì)量不好,因此如何最大程度上避免人為錯(cuò)誤,就成了數(shù)據(jù)質(zhì)量保障的重要工作。還是兩個(gè)方面的思路,一個(gè)是交叉檢驗(yàn),既然一個(gè)人容易出問題,那么兩人及以上來校驗(yàn),出錯(cuò)的概率就會(huì)大幅降低,因此需要搭建一個(gè)可行的測(cè)試環(huán)境,如果沒有,可以在線上平臺(tái)搭建一個(gè)相同的測(cè)試表,導(dǎo)入少量的數(shù)據(jù),這時(shí)安排測(cè)試人員介入邏輯的檢查,并且做相應(yīng)的回歸測(cè)試。另一個(gè)是進(jìn)行靜態(tài)的SQL代碼檢查,針對(duì)大表掃描、空值校驗(yàn)等檢查,提示開發(fā)人員對(duì)應(yīng)的錯(cuò)誤風(fēng)險(xiǎn)。在數(shù)據(jù)采集環(huán)節(jié),還可以加入一些與具體業(yè)務(wù)緊密相連的監(jiān)控規(guī)則,例如訂單拍下時(shí)間不大于當(dāng)天時(shí)間,等等。

          再次是搭建一些機(jī)制完善的輔助平臺(tái),例如可以調(diào)整任務(wù)優(yōu)先級(jí)的調(diào)度平臺(tái),例如可以準(zhǔn)時(shí)發(fā)現(xiàn)問題并提醒的報(bào)警平臺(tái),例如可以檢測(cè)任務(wù)依賴死鎖的開發(fā)平臺(tái),等等,針對(duì)數(shù)據(jù)的延遲監(jiān)控、作業(yè)調(diào)度的合理性等情況做輔助的技術(shù)保障。

          最后是要有完善的開發(fā)組織工作,針對(duì)每一次出現(xiàn)的數(shù)據(jù)故障,都得安排對(duì)應(yīng)的事件回顧,每周安排例行會(huì)議進(jìn)行典型開發(fā)代碼的Code Review,有詳細(xì)的數(shù)據(jù)問題應(yīng)對(duì)手冊(cè)以供新入職的開發(fā)人員熟悉,等等。

          |0x04 數(shù)據(jù)資產(chǎn)評(píng)估

          既然提到了數(shù)據(jù)質(zhì)量,那么質(zhì)量便有好壞的區(qū)分,像數(shù)據(jù)平臺(tái)百萬級(jí)的數(shù)據(jù)表,總有高質(zhì)量與低質(zhì)量的區(qū)分,這時(shí)候需要進(jìn)行相應(yīng)的數(shù)據(jù)資產(chǎn)評(píng)估,高質(zhì)量的表需要更高的優(yōu)先級(jí)來進(jìn)行處理

          這里提供幾個(gè)參考的制定標(biāo)準(zhǔn):

          1. 數(shù)據(jù)更新頻率定時(shí)更新的肯定好過偶爾更新的;

          2. 數(shù)據(jù)丟失后果,假設(shè)某張表數(shù)據(jù)丟失,會(huì)引起重大資產(chǎn)損失,它肯定是好數(shù)據(jù)

          3. 數(shù)據(jù)依賴程度,被跨部門依賴、被重要數(shù)據(jù)依賴,優(yōu)先級(jí)肯定很高;

          4. 數(shù)據(jù)業(yè)務(wù)屬性,帶“金額”這種字段的數(shù)據(jù),相應(yīng)的重要性要高;

          5. 數(shù)據(jù)使用頻率,有些表被調(diào)用次數(shù)很多,說明它很有存在的必要性;

          6. 數(shù)據(jù)故障次數(shù),當(dāng)一張表出過問題時(shí),要及時(shí)標(biāo)注,便于依賴它的任務(wù)知道可不可靠。

          |0xFF 如何評(píng)估數(shù)據(jù)質(zhì)量

          這里提供一些常見場(chǎng)景:

          1. 通過數(shù)據(jù)資產(chǎn)評(píng)估體系,制定高、中、低三種數(shù)據(jù)標(biāo)準(zhǔn),以季度為周期,統(tǒng)計(jì)三種標(biāo)準(zhǔn)問題次數(shù)

          2. 規(guī)定詳細(xì)的數(shù)據(jù)產(chǎn)出時(shí)間,假設(shè)數(shù)據(jù)產(chǎn)出延時(shí),計(jì)算延遲時(shí)間及問題,并進(jìn)行記錄

          3. 通過產(chǎn)品、客戶、數(shù)據(jù)使用人員及配合部門反饋意見,發(fā)現(xiàn)數(shù)據(jù)不一致等問題,及時(shí)反饋,確認(rèn)后計(jì)入問題清單

          4. 通過監(jiān)控及報(bào)警平臺(tái),統(tǒng)計(jì)每日異常信息,分類產(chǎn)出報(bào)告

          5. 針對(duì)每位開發(fā)人員,測(cè)試人員檢查發(fā)現(xiàn)問題后,如果確認(rèn)問題存在,計(jì)入開發(fā)問題,最后匯總常見問題場(chǎng)景

          6. 定期掃描開發(fā)代碼,發(fā)現(xiàn)問題及時(shí)發(fā)出報(bào)警

          --end--


          掃描下方二維碼
          添加好友,備注【交流群
          拉你到學(xué)習(xí)路線和資源豐富的交流群

          瀏覽 48
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品国产成人a在线观看 | 免费欧美一级视频 | 无码在线高清播放 | 欧美专区在线 | 精品久久成人无码片 |