數據倉庫是什麼,如何建立(總結)

一、是什麼

  • 官方解釋:面向主題的集成的相對穩定反應歷史變化,用於企業的管理決策分析。
  • 開發者角度:通過接入各種數據源,打破數據壁壘,根據業務方的需求,設計方便使用和準確的數據模型,高效將結果輸出給業務方。
  • 業務方角度:能快速準確提供數據,給公司的日常運營和領導決策提供數據支持和指導

二、如何建立

1、分析業務需求、確認倉庫主題

例:領導想看各部門GMV、毛利情況。運營團隊要了解各個渠道的訂單轉化率,商品、品牌、品類、銷售情況。用戶團隊關注用戶相關的銷售、商家團隊關注商家的銷售…
通過業務需求分析,需要做一個銷售交易相關的主題

2、確定總線矩陣

維度:用戶維度、商品維度、商家維度、訂單渠道維度
業務過程:用戶下單、支付成功、確認收貨

3、設計分層架構

一般是業務接入層、明細層、彙總層、應用層
A、業務接入層:同步訂單、用戶、商家、商品、訂單渠道相關的業務表到倉庫中,不做任何清洗操作。
B、一致性維度:目標是儘量豐富維度屬性,但是又不要過度運算,保證核心維度模型的整潔性,做好維度屬性的整合和拆分。(商品表:對於產出快且使用率高的維度屬性,比如名稱、品牌、品類等,可放在商品基礎維度表。但對於產出慢且使用率低的維度屬性,比如上市季節、上架時間等,可放在商品的擴展維度表)。
C、明細層:保證粒度最細,使用退化維度的方法,將常用的維度屬性加入明細表中。
D、彙總層:對於業務常關注的維度,對明細表進行加工彙總。(用戶團隊關注用戶維度的數據指標,比如每個用戶的下單、支付的商品數量和對應金額。
E、應用層:比如在做用戶畫像時、對於下單支付這塊:用戶常用的收貨地址、下單常見時間段、是否衝動性購買類型、購買偏好品牌品類。

4、規範約束

  • A、表規範
    1、業務接入層:{公司名}ods{mysql}.{庫名}__{表名}
    2、維度層:dim_{業務BU/public}{維度定義}{自定義標籤}
    3、明細層:dwd_{業務BU/public}{數據域}{業務過程}{自定義標籤}{刷新週期}{增全量標識}
    4、彙總層:dws
    {業務BU/public}{數據域}{業務過程}{自定義標籤}{統計週期}{增全量標識}
    PS.
    增全量:
    (indr | full)
    臨時表:tmp_
    小時表:_hour
  • B、字段規範
    1、有ID字段,儘量也有NAME字段
    2、如果是HIVE關鍵詞,加_col結尾(eg. select_col)
    3、判斷型,is_
    4、金額類,(rmb | origin)
    5、日期類,
    (date | datetime)
    6、計數類,{業務含義}{時間區間}{計數標識 cnt、uv、pv}
  • C、註釋規範
    所有字段都要有註釋,簡潔、明確
    1、枚舉型,例狀態說明:1-有效,0-無效
    2、金額型,{單位}(RMB)
    3、判斷型,{是否}訂單有效
    4、外健型,[被參照表.]被參照字段
    5、廢棄型,已廢棄,參照新字段[col]
  • D、開發上線流程
    1、先在測試環境進行SQL開發,測試代碼的執行效率,驗證邏輯的準確性
    2、線上環境,通過GIT管理倉庫代碼,提交開發後PR、指定人審覈、審覈通過後合併代碼、線上拉取最新代碼

5、維度建模

  • 建模流程:
    1、需求分析
    2、選擇粒度
    3、確認維度
    4、確認事實
  • 結合星型雪花模型、退化維度,建設維度表、事實表,大寬表
  • 建設指標體系(TODO)

6、任務調度、數據質量、元數據

常見的支持依賴和時間的調度工具:
1、動態調度:Airflow、Zeus | Hera、DolphinScheduler
2、靜態調度:Oozie、Azkaban
數據質量工具:Apache Griffin
計算資源管理工具:Dr-Elephant
元數據血緣分析:Hive Hook | 解析AST語法樹,Neo4j 圖形數據庫

7、BI、OLAP

常見的BI工具:CBoard、Metabase、SuperSet、Tableau、帆軟BI | QuickBI | PowerBI
OLAP:Presto、Kylin、Druid …

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章