天天看點

【離線數倉-4-資料倉庫設計-分層規劃&建構流程】離線數倉-4-資料倉庫設計-分層規劃&建構流程

離線數倉-4-資料倉庫設計-分層規劃&建構流程

  • 離線數倉-4-資料倉庫設計-分層規劃&建構流程
    • 1.資料倉庫分層規劃
    • 2.資料倉庫建構流程
      • 1.資料調研
        • 1.業務調研
        • 2.需求分析
        • 3.總結
      • 2.明确資料域
      • 3.建構業務總線矩陣&次元模型設計
      • 4.明确統計名額
        • 1.名額體系相關概念
          • 1.原子名額
          • 2.派生名額
          • 3.衍生名額
        • 2.名額體系對于數倉模組化的意義
      • 5.彙總模型設計

離線數倉-4-資料倉庫設計-分層規劃&建構流程

1.資料倉庫分層規劃

  • 優秀可靠的數倉體系,需要良好的資料分層結構。合理的分層,能夠使資料體系更加清晰,使複雜問題得以簡化。
  • 一般都是受到了OneData體系的啟發,進行了資料倉庫分層規劃。
  • 下面是該項目的資料倉庫分層體系
    【離線數倉-4-資料倉庫設計-分層規劃&建構流程】離線數倉-4-資料倉庫設計-分層規劃&建構流程

2.資料倉庫建構流程

【離線數倉-4-資料倉庫設計-分層規劃&建構流程】離線數倉-4-資料倉庫設計-分層規劃&建構流程
  • 1.資料調研
    • 業務調研:對于最前面業務系統的調研
    • 需求分析:對于後面的需求的分析
  • 2.明确資料域
    • 按照标準對資料縱向劃分
  • 3.建構業務總線矩陣
    • 将事實與次元整合為一個二維表格内,觀察那些事實與次元有關聯,進而就會形成次元模型
  • 4.次元模型設計
    • 次元模型的設計,是由于最開始的業務驅動的,有哪些業務對應就有哪些事實表,有哪些業務對應的環境就有哪些次元表
  • 5.彙總模型設計
    • 彙總模型設計,是依托于後面的客戶提出的需求,是需求驅動的,關聯擷取哪些名額是能夠重複利用,進而減少計算的備援。
  • 6.明确統計名額
    • 整理對應的名額體系:原子名額、派生名額、衍生名額。

1.資料調研

資料調研重點要做兩項工作,分别是業務調研和需求分析。這兩項工作做的是否充分,直接影響着資料倉庫的品質。

1.業務調研

  • 業務調研的主要目标是熟悉業務流程、熟悉業務資料
  • 熟悉業務流程要求做到,明确每個業務的具體流程,需要将該業務所包含的每個業務過程一一列舉出來。
    • 此處的業務過程需要調研的很透徹,因為此處的業務過程就對應這DWD層的事實表。
  • 熟悉業務資料要求做到,将資料(包括埋點日志和業務資料表)與業務過程對應起來,明确每個業務過程會對哪些表的資料産生影響,以及産生什麼影響。
    • 産生的影響,需要具體到,是新增一條資料,還是修改一條資料,并且需要明确新增的内容或者是修改的邏輯。
  • 舉例說明: 電商中交易業務,具體流程如下圖,主要涉及到的業務過程:買家下單、買家付款、賣家發貨、買家收貨,以及買個業務過程會對那些表産生影響,都需要下沉到很細層面。
    【離線數倉-4-資料倉庫設計-分層規劃&建構流程】離線數倉-4-資料倉庫設計-分層規劃&建構流程
    • 以添加購物車過程為例,添加購物車這個過程會對那些表産生影響,并且産生什麼影響,
      • 比如:添加一商品到購物車,必然會對于此使用者的購物表産生影響,添加一條記錄,同時binlog中會産生insert操作,maxwell等服務可以監控到此過程,然後将資料寫出到ods層,加工到dwd層;
      • 也可能是binlog産生了update操作,但是update操作涉及到的使用者購物表的字段很多,該表中每個字段發生變化,都會産生update的binlog。需要進行過濾,過濾出購物車對應的字段發生增加的資料,才算是添加購物車的操作。
      • 以上就是針對于“添加購物車”這一業務過程的分析,都需要細化到這種粒度,才算業務調研充分。

2.需求分析

  • 典型的需求名額如,最近一天各省份手機品類訂單總額。
  • 分析需求時,需要明确需求所需的業務過程及次元,例如該需求所需的業務過程就是買家下單,所需的次元有日期,省份,商品品類。

3.總結

  • 做完業務分析和需求分析之後,要保證每個需求都能找到與之對應的業務過程及次元。若現有資料無法滿足需求,則需要和業務方進行溝通,例如某個頁面需要新增某個行為的埋點。

2.明确資料域

  • 資料倉庫模型設計除橫向的分層外,通常也需要根據業務情況進行縱向劃分資料域。劃分資料域的意義是便于資料的管理和應用。
  • 通常可以根據業務過程或者部門進行劃分,本項目根據業務過程進行劃分,需要注意的是一個業務過程隻能屬于一個資料域。
  • 下面是本項目所需的所有業務過程及資料域劃分詳情:
資料域 業務過程
交易域 加購、下單、取消訂單、支付成功、退單、退款成功
流量域 頁面浏覽、啟動應用、動作、曝光、錯誤
使用者域 注冊、登入
互動域 收藏、評價
工具域 優惠券領取、優惠券使用(下單)、優惠券使用(支付)

3.建構業務總線矩陣&次元模型設計

  • 業務總線矩陣中包含次元模型所需的所有事實(業務過程)以及次元,以及各業務過程與各次元的關系。矩陣的行是一個個業務過程,矩陣的列是一個個的次元,行列的交點表示業務過程與次元的關系。
    【離線數倉-4-資料倉庫設計-分層規劃&建構流程】離線數倉-4-資料倉庫設計-分層規劃&建構流程
  • 業務總線矩陣中包含次元模型所需的所有事實(業務過程)以及次元,以及各業務過程與各次元的關系。矩陣的行是一個個業務過程,矩陣的列是一個個的次元,行列的交點表示業務過程與次元的關系。
  • 按照事務型事實表的設計流程,選擇業務過程–>聲明粒度–>确認次元–>确認事實,得到的最終的業務總線矩陣見以下表格。
  • 後續的DWD層以及DIM層的搭建需參考業務總線矩陣。
    【離線數倉-4-資料倉庫設計-分層規劃&建構流程】離線數倉-4-資料倉庫設計-分層規劃&建構流程

4.明确統計名額

  • 明确統計名額具體的工作是,深入分析需求,建構名額體系。建構名額體系的主要意義就是名額定義标準化。所有名額的定義,都必須遵循同一套标準,這樣能有效的避免名額定義存在歧義,名額定義重複等問題。

1.名額體系相關概念

1.原子名額

原子名額基于某一業務過程的路徑成本,是業務定義中不可再拆解的名額,原子名額的核心功能就是對名額的聚合邏輯進行了定義。我們可以得出結論,原子名額包含三要素,分别是業務過程、路徑成本和聚合邏輯。

例如訂單總額就是一個典型的原子名額,其中的業務過程為使用者下單、路徑成本為訂單金額,聚合邏輯為sum()求和。需要注意的是原子名額隻是用來輔助定義名額一個概念,通常不會對應有實際統計需求與之對應。

2.派生名額

派生名額基于原子名額,與原子名額不同,派生名額通常會對應實際的統計需求。其與原子名額的關系如下圖所示。

【離線數倉-4-資料倉庫設計-分層規劃&建構流程】離線數倉-4-資料倉庫設計-分層規劃&建構流程
3.衍生名額

衍生名額是在一個或多個派生名額的基礎上,通過各種邏輯運算複合而成的。例如比率、比例等類型的名額。衍生名額也會對應實際的統計需求。

【離線數倉-4-資料倉庫設計-分層規劃&建構流程】離線數倉-4-資料倉庫設計-分層規劃&建構流程

2.名額體系對于數倉模組化的意義

  • 通過上述兩個具體的案例可以看出,絕大多數的統計需求,都可以使用原子名額、派生名額以及衍生名額這套标準去定義。同時能夠發現這些統計需求都直接的或間接的對應一個或者是多個派生名額。
  • 當統計需求足夠多時,必然會出現部分統計需求對應的派生名額相同的情況。這種情況下,我們就可以考慮将這些公共的派生名額儲存下來,這樣做的主要目的就是減少重複計算,提高資料的複用性。
  • 這些公共的派生名額統一儲存在資料倉庫的DWS層。是以DWS層設計,就可以參考我們根據現有的統計需求整理出的派生名額。
  • 按照上述标準整理出的名額體系部分如下:
    【離線數倉-4-資料倉庫設計-分層規劃&建構流程】離線數倉-4-資料倉庫設計-分層規劃&建構流程
  • 将上述名額體系抽取出來的所有名額彙總如下表格:
    【離線數倉-4-資料倉庫設計-分層規劃&建構流程】離線數倉-4-資料倉庫設計-分層規劃&建構流程

5.彙總模型設計

  • 彙總模型的設計參考上述整理出的名額體系(主要是派生名額)即可。彙總表與派生名額的對應關系是,一張彙總表通常包含業務過程相同、統計周期相同、統計粒度相同的多個派生名額。請思考:彙總表與事實表的對應關系是?多對多

繼續閱讀