有效數據治理的6大原則

3 評論 11007 瀏覽 25 收藏 12 分鐘

如果你常常對數據準確性而煩惱,大部分時間都用于處理數據而不是對業務進行思考分析的話,那么你需要好好對數據進行治理了。

一、為什么要進行數據治理

不知道你是否有這樣的感受,看到數據后,一臉懵逼,不知道各個表和字段代表什么意思,再看看別的同事寫的SQL,一條SQL語句有幾百行,各種表關聯,然后問了其中一個同事,他說“別提了,數據都不準,我快被數據折磨死了!”,此時你是不是“想死”!欲哭無淚……

究其背后的原因,是因為負責的人只是問題使然,哪有問題哪里去補,沒有整體的統籌規劃,一步錯,步步錯,數據最后是越來越重,查詢越來越復雜,數據準確性還沒有人敢打保票,同時修復的難度也大大增加。

二、如何進行數據治理

如果要想將數據治理好的話,需要遵循以下六大原則、合理制定數據中間表模型以及埋點采集到應用全流程的把控。

1. 六大原則

原則1:關鍵概念多方共識

關鍵概念若涉及多方,比如成交客戶的定義,要確保公司內部和客戶相關的所有業務人員理解一致。

你或許會說,成交客戶還不好理解么,就是購買了我公司產品且簽署合同的用戶就是一個成交客戶,但是實際情況遠非如此,筆者當時處理該塊的業務時,問不同的業務人員得到的結果都不一樣,這樣就造成了數據指標統計的歧義甚至數據的不準確。

  1. 當一個合同主體變換名稱(含工商注冊名稱變更、更換簽約公司等),那么這個客戶算一個成交客戶嗎?
  2. 同一個 集團/公司 下,不同的 子公司/業務線/部門 用同一個名字簽署多個不同合同,屬于單個成交客戶還是多個成交客戶?
  3. 當合同還在「待確認」或未拿到合同編號時,如果客戶運營人員已經開始服務客戶,那么這個客戶算一個成交客戶嗎?……

原則2:某個類型的值經常發生變動,則需要冗余一個通用字段冗余值

筆者是深受其害,以前每個月底都需要找開發、業務人員對一遍數據,舉個例子:

查詢原始指標:soure_type為A,B的任務產出的金幣數額為消費指標,SQL已針對該指標做了類型篩選。某一天業務運營人 員上線新的任務,C類型的任務會貢獻金幣流水,但是開發未告知數據人員,導致原來的關鍵指標數值出現差錯。

處理過數據的同學都知道,某個指標的實現可能和其它幾個關鍵指標相關,那么該指標的異常排查就需要逐個檢查是哪個相關指標出問題了,查找到原因可能2,3天的時間就沒了,但如果事先開發人員冗余了一個通用字段代表該類消費指標,那么后續不管業務人員上線多少個消費類型的任務,都不會對原來的指標產生影響。

原則3:每個實體都有唯一、不變的ID,最好沒有實際意義

一是為了實體的唯一性,二是為了表關聯或更新時不受業務的影響。

原則4:涉及協作的數據,發現問題要從修改源頭做起,保證下一次拿到正確的數據

協作的數據可以說是一個串聯的過程,源頭的數據會逐層影響下層的數據,不要為了一時方便,只修改目前發現問題的地方,要從修改源頭做起,方便他人即方便自己。

原則5:編寫操作清單,操作前請三思

數據間存在關聯,把數據間的關聯關系陳列清楚、注意事項標注清楚,操作前一一核對,小數據量驗證無錯后,大數據量執行。

原則6:系統工程的方法管理數據,盡可能使用系統,監控數據錯誤并及時修復。

將使用數據的相關方都畫在一張系統循環圖中,觀察數據錯誤產生于系統哪個環節,如何影響后續各個環節,避免惡性循環的產生。

2. 合理制定數據中間表模型

一款產品的存在是為了解決某類用戶群體的需求痛點,并在此基礎上進行盈利;數據分析的存在也是為了輔助挖掘和發現潛在用戶需求并進行優化和運營。

而數據的準確性和數據查取的效率依賴于底層的數據采集和中間層的數據中間表的構建。

關于底層的數據采集方法詳見:產品經理給開發提埋點需求的正確姿勢

用戶的需求隱藏在用戶行為中,從聚合用戶行為的角度構建數據中間表方便數據查詢和分析。

用戶行為分析模型

以用戶觀看短視頻這個用戶行為來說

  • WHO:即觀看視頻的人是誰,可以唯一標識用戶身份,如設備ID,注冊后的用戶ID。如果和第三方合作的話,可以對一個用戶生成一個唯一標識ID,用戶串聯設備ID和注冊后的用戶ID。
  • WHEN:觀看視頻發生的實際時間,一般會記錄客戶端時間和服務端時間。
  • WHAT:即用戶觀看視頻這個行為。
  • HOW:記錄用戶觀看視頻的方式,如所在頻道、觀看時長、視頻類型等等
  • WHERE:記錄用戶在哪個省份、城市、IP下觀看視頻的,同時還會記錄網絡類型、應用版本、操作系統等其它環境信息。

構建包含完整用戶行為的數據中間表

構建好的業務指標體系的高效計算和快速有條理展現依賴于數據倉庫中間表的建設,若中間表設計不合理,就會導致滿足基本業務分析需求時一步不能計算出來且邏輯關聯多導致實時計算等待時間過長,這樣就增加了數據分析的等待成本以及業務人員查詢的成本。

所以一張數據中間表應該包含用戶完整的行為信息和動態屬性信息,而要描述用戶的完整行為就需要按照用戶行為模型記錄上述信息,但實際情況是,我們所記錄的表數據是分割的。

比如,觀看視頻這個表一般只會記錄和視頻相關的信息,用戶的How、WHERE信息會分部在其它表中,這樣就增加了表關聯的復雜度,邏輯復雜不利于分析,所以我們需要構建一個用戶行為中間表,里面包含了上述5個方面的詳細信息。

同時通過事件名稱冗余某一類的埋點行為數據,如可將金融相關的埋點,作為值傳給事件名稱,這樣查和金融相關的埋點數據時只查這一張中間表即可。

除了用戶行為類的中間表外,還有一張存儲用戶基本信息的,因為除了和用戶行為相關的動態信息外,還有專屬于該用戶的靜態信息,如年齡、性別、注冊時間、注冊地等。

3. 埋點采集到應用全流程框架

數據中間表的數據底層來源于基礎埋點數據,基礎埋點數據的準確性是基礎中的基礎,而埋點數據的采集往往會涉及產品方、數據方、業務方、技術方,四方配合不好的話,就會影響數據的準確性,到需要用數據時發現數據采集錯誤,只能等待下次發版修改,效率低下,延誤時機。

故需要梳理一套埋點流程規范,以提高整個配合過程的效率、數據準確性、業務支持的及時性。

若有數據產品角色,第二部分主要由數據產品負責,數據分析師要密切配合數據產品,因為最終需要分析數據的是數據分析師。

三、數據治理后的數據狀態是怎樣的?

我想,數據治理好后,起碼可以省50%的數據修改反復的時間,將更多的精力用在業務分析上,同時數據是準確的,可以正確引導業務決策。

另外降低了SQL復雜度,產品運營等業務人員可以通過簡單的SQL查詢所要看到的指標。常用指標有:次數、人數、人均次數、總金額等數值指標,再結合數據中間表中構建的各種維度,就能實現多維交叉分析。

最后舉個SQL實現例子:

select ymd,cc,count(*) ,count(distinct uid) from table_name where ymd between ‘20190701’ and ‘20190712’ and event_type=’clicktask’ group by ymd,cc order by ymd desc;

 

作者:北極星,神策數據分析師,知乎專欄:數據分析方法與實踐,致力于通過數據分析實現產品優化和精細化運營。

本文由?@北極星 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自 Unsplash ,基于 CC0 協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 一看截圖配色就知道是作者神策出來的了

    回復
  2. 讓運營或者業務區寫sql查數據,基本這種情況非常少
    一般都是把關鍵數據指標做成可視化圖形界面,然后一些非常規的數據通過給數據部門提需求,讓他們手動差,然后反饋。
    還有重要的一點就是前期技術架構搭建的是否合理,這個直接導致后期數據統計工作的復雜程度。

    來自江蘇 回復
    1. 嗯嗯,數據可視化后,剩余的部分需求或臨時需求,業務運營人員可以通過簡單SQL自助查詢,等排期的話有時候會等好久……另外數據可視化的易用性也依賴于底層數據中間表的建設

      回復