經過前篇幾篇文章說明架構 Data Team, 到底如何展現 Data Team 的實力,Day 11 說到的提升整體公司的資料素養 ,讓我們趕快開始這一篇。
先不要著急馬上想把商業邏輯寫進 dbt models. 花點時間開始跟不同團隊釐清重要指標。你可能會意外的發現,有些重要指標大家都講這麼多年了,居然背後的計算邏輯不一樣。
「營收」在 Coalesce 2022 是經典案例,好幾場演講都被提到,台下觀眾就一起翻白眼 🙄,大家都很有感。當業務團隊提到營收,通常他們指的是訂單金額;而財務團隊提到的營收,通常是指會計上可以認列為營收的營收。還不用細談時區差異、每週是哪一天起算或者稅前稅後,就已經發現有這麼大不同。
如果你提供的資料跟商業團隊每天看到的數字不相符,他們會覺得你的數字有問題,「這數字怪怪的,怎麼跟我過去看得不一樣」,就很難讓他們建立對資料的信任感,而你也得一天到晚去比對兩邊數字倒底哪裡有差異。
我經歷過(三不五時的還在?!)這段 🤦♀️。之前有提供營收數字,跨部門都會參考,結果發現行銷的營收是含稅的總訂單金額,主管看的是未稅總金額,然後財務看的是稅前認列營收。開了一次落落長的會議 🗣️ 讓三方爭辯到底要用哪個營收,為何訂單金額、營收、收入不一樣。這些名詞都很普通,但有些有嚴謹的定義(財務),有些沒有。
假設一天有 10 多萬的活躍使用者,各團隊都說 10 多萬,多半不會仔細地計較數字,就說 10 多萬。但對 Data Team 來說,我們得要知道這 10 多萬是哪算出來的,為什麼行銷是說 113,203 為 10 多萬,而產品是說 120,302 為 10 多萬。
指出事實。我們不太可能挖掘每個差異,但至少發現的時候要提出來,尤其當這個差異是有重要影響的時候,例如營收。如果大家都同意我們有 10 多萬 DAU, 幾千個人的差異可能還好,但是當我們要用這 10 多萬人開始切族群,需要資料更精準時,就可能會出問題。
問大家數字是怎麼來的。在還沒有 Data Team 之前,公司還是照樣營運,因此各部門有自己一套方法生出數字,可能是參考 GA4, 自家網站的數字或者第三方等等。通常,自家網站有在計算 DAU,大概也不太可能跟 GA4 計算出來的 DAU 完全一樣,如果不同團隊的 DAU 來源不同,當然數字就不會一樣。
鼓勵溝通。協助不同團隊開啟對話,分享他們個別怎麼看資料,解釋數字從哪來,通常如此就可以發現彼此的差異,會自然的開始詢問對方、討論原因。
持續學習。發現資料差異是滿重要的,上游就有差更不說下游。Data Team 得決定要抹平差異,還是要接受。發現差異後的討論、決策過程也很重要,滿多考量的,建議要紀錄決策的原因及考量,讓後續同事可以參考,也讓之後時空變化,可以再回頭檢視當初的考量是否要改變。
我們希望展示的圖表簡單好懂,讓看的人一下子就抓到重點。不希望收到報表的人還要花時間去釐清跟分析,或者讓數字呈現太艱澀難懂。
當然資料使用者還是得對資料有基本認識,要取得一個平衡。簡化跟統一各種定義或者要在資料上顯示定應不同,例如,你會希望讓全公司看到的「營收」數字都一樣,還是要用不同定義給「業務營收」、「財務營收」?
我在公司文件內開一個 “🍪 How-To” 系列,將各種 How To 都放這裡,讓大家養成習慣不知道什麼事情的時候就去哪邊找,例如 How To 查看 Revenue 報表?
dbt 知道這個問題,也很重視 documentation 且提供很方便的做法。 只要去看文件網站 documentation site 就可以一目瞭然各種資料。寫資料的方式也很直覺,再搭配 persist_doc 可將文件串到上游,以及 dbt-metabase 可將文件串到下游 Metabase.
dbt doc site
釐清定義不見得都是挖掘資料的第一步,有時你就得直接跳入某個定義開始寫邏輯,後續才發現原來有其他定義。但是先去了解定義,通常可以確保或意外的發現邏輯上的落差。Data Team 從小開始,不太可能每個定義都去釐清差異。下篇文章,我想談談如何提供自助化工具,讓資料使用者可以自己來。
對 dbt 或 data 有興趣 👋?歡迎加入 dbt community 到 #local-taipei 找我們,也有實體 Meetup 請到 dbt Taipei Meetup 報名參加