數(shù)據(jù)人學習平臺上線了:www.shujurenclub.com 作者介紹 @圖圖 BAT數(shù)據(jù)產(chǎn)品經(jīng)理 專注數(shù)據(jù)產(chǎn)品、持續(xù)學習中 “數(shù)據(jù)人創(chuàng)作者聯(lián)盟”成員 1 什么是寬表? 從字面意義上講就是寬表就是字段比較多的數(shù)據(jù)庫表,多應用于DWD層或報表應用層,將很多維度、事實、指標等關聯(lián)匯總成一張數(shù)據(jù)表。區(qū)別于DWS層,寬表往往是跨主題的,且字段較多(寬表之寬),所以非常適合用來查詢和提升效率,缺點是數(shù)據(jù)冗余和存儲要求較高。 2 為什么要建設寬表? 數(shù)據(jù)倉庫建模大多數(shù)時候是要嚴格遵循建模要求的,星型模型或者雪花模型,而寬表的特點在于跨業(yè)務主題,所以很難遵循標準的建模要求和范式結(jié)構(gòu),而且寬表建模也沒有嚴格的數(shù)倉分層概念,所以對于分層的好處管理方便、問題定位、節(jié)約資源等也是比較缺失的,那么我們建設寬表呢? ① 可以統(tǒng)一指標口徑 這個問題對于大廠來說是非常常見的,大廠的特點是業(yè)務廣泛,那對于做數(shù)據(jù)的同學來說面臨的挑戰(zhàn)就是數(shù)據(jù)源多、數(shù)據(jù)流復雜、口徑統(tǒng)一困難。由于上述種種困難,就會帶來報表口徑不一致這種常見問題,然而這種問題是很難通過口徑統(tǒng)一來去解決的,因為就算口徑統(tǒng)一了,數(shù)據(jù)流各個環(huán)節(jié)的處理過程的差異,對于數(shù)據(jù)產(chǎn)品來說去定位也是很困難的。 如果我們的報表要是都能從寬表出,那么我們報表上的指標口徑肯定是一樣的,其實這一點很多人都深有體會,同一個指標的口徑不一致,導致我們提供的數(shù)據(jù)在不同的出口不一樣,是業(yè)務部門經(jīng)常提出的一個問題。所以把核心邏輯下沉到寬表,收斂口徑,這樣可以解決大部分指標口徑不統(tǒng)一的情況。 ② 可以提升開發(fā)效率 如果報表層的需求都能從寬表處,那么除了上述統(tǒng)一指標口徑的好處之外,也避免了我們從頭開始計算,如果每一張報表都要從DWD甚至ODS開始加工,那么不僅開發(fā)效率很慢,數(shù)據(jù)流過于復雜對于問題排查也不是很友好。 ③ 可以提升數(shù)據(jù)質(zhì)量 寬表的準確性都需要經(jīng)過邏輯及數(shù)據(jù)準確性的校驗,對于開發(fā)來說人為開發(fā),邏輯錯誤的可能性很小,可以直接使用,要是從頭開發(fā)的話,很容易出現(xiàn)因為對業(yè)務理解不透徹或者導致取數(shù)邏輯有問題,進而導致數(shù)據(jù)質(zhì)量問題。 ④ 可以建設自助化查詢工具 當上面講了這么多建設寬表建設的好處,提到對應用層的好處其實不多,或者說更偏向于數(shù)倉為了解決各類統(tǒng)計問題給出的解決方案,但是對于數(shù)據(jù)產(chǎn)品來說應該思考現(xiàn)有的技術架構(gòu)升級,為了我們數(shù)據(jù)產(chǎn)品的建設或者提升業(yè)務取數(shù)效率能夠做些什么。那么除了報表層統(tǒng)一口徑,數(shù)據(jù)產(chǎn)品可以基于寬表規(guī)劃一些更多應用類形式,比如自助化查詢工具、自定義生成查詢SQL,自助報表建設等。 這么做的思想是:將寬表的維度和指標盡量透明化給業(yè)務,業(yè)務可以自取所需進行分析,這樣就把業(yè)務提需給數(shù)據(jù)產(chǎn)品這種關系,轉(zhuǎn)變成數(shù)據(jù)產(chǎn)品提供給業(yè)務我們能為你提供什么樣的分析能力,業(yè)務按照自己的需求進行自助分析,這也就是實現(xiàn)了這個環(huán)節(jié)上數(shù)據(jù)產(chǎn)品的價值。 3 如何設計寬表? ① 寬表到底多寬 寬表到底要多寬?按照上面介紹的貌似什么字段都可以往寬表里裝,但事實上并不如此,如果什么字段都放在寬表,那么數(shù)倉分層貌似也沒什么意義了,所以這個問題的答案是:要從需求出發(fā)。 從需求出發(fā)的話,寬表設計雖然可以跨主題,但肯定不會跨域進行分析??梢韵劝凑招枨蟾哳l場景進行初版設計,后續(xù)慢慢擴充,但擴充并不是無原則擴充,一定要進行合理評估。 ② 寬表字段如何設計 作為數(shù)據(jù)產(chǎn)品可以從日常需求出發(fā),考慮哪些字段是常用且高頻使用的,對以下字段明確口徑和邏輯,這樣就便于數(shù)倉進行開發(fā)了。最好輸出一個表字段說明文檔,其實也是一個數(shù)據(jù)產(chǎn)品和數(shù)倉對齊業(yè)務了解的好機會。 具體到設計過程應該如下: · 深挖日常業(yè)務需求; · 將業(yè)務需求進行分類,篩選出高頻需求特點; · 對高頻需求進行拆解,落實到指標和維度,形成一個初版的表結(jié)構(gòu)文檔; · 除了高頻需求之外有哪些常用字段,如地域信息、用戶標簽等信息,豐富寬表屬性; 4 寬表的局限性 ① 性能不高 因為我們的寬表的計算邏輯往往很復雜,再加上寬表的數(shù)據(jù)輸入是有大量依賴的,也就是說需要處理的數(shù)據(jù)量很大,在負載邏輯+大數(shù)據(jù)量的原因下,導致我們的寬表往往運行很慢,資源占用很多。 ② 開發(fā)難度大/維護成本高 我們說了基于寬表做報表開發(fā)才是正確的姿勢,但是寬表本身也是我們開發(fā)人員開發(fā)的,因為本身的邏輯很復雜設計的業(yè)務邏輯繁多,所以給我們的開發(fā)就帶來了挑戰(zhàn),而且由于業(yè)務邏輯的變更我們也需要去維護著復雜的邏輯,并且如果涉及到數(shù)據(jù)回溯成本也非常大,所以寬表建設后一般是不做歷史數(shù)據(jù)回溯的。 想了解更多數(shù)據(jù)知識也歡迎看,7位大廠數(shù)據(jù)產(chǎn)品寫的《大數(shù)據(jù)實踐之路:數(shù)據(jù)中臺+數(shù)據(jù)分析+產(chǎn)品應用》這本書。 |
|