天天看點

一篇文章搞懂資料倉庫:次元表(設計原則、設計方法)

目錄

​​1、什麼是次元表?​​

​​2、次元表設計原則​​

​​(1)次元屬性盡量豐富,為資料使用打下基礎​​

​​(2)給出詳實的、富有意義的文字描述​​

​​(3)區分數值型屬性和事實​​

​​(4)沉澱出通用的次元屬性,為建立一緻性次元做好鋪墊​​

​​(5)退化次元(DegenerateDimension)​​

​​(6)緩慢變化維(Slowly Changing Dimensions)​​

​​3、次元表設計方法​​

1、什麼是次元表?

次元是次元模組化的基礎和靈魂。在次元模組化中,将度量稱為“事實” , 将環境描述為“次元”。

次元表包含了事實表中指定屬性的相關詳細資訊,最常用的次元表有日期次元、城市次元等。

例,小編的日期維表:

num 字段名 字段中文名 描述 資料類型
1 date 日期 日期 yyyMMdd格式 bigint
2 week 星期,數字型 星期,數字型 0-6 bigint
3 week_cn 星期中文名 星期中文名 星期一…… string
4 year_weeks 一年中的第幾周 一年中的第幾周 1 2 3…… bigint
5 mon_dt 本周周一日期 本周周一日期 bigint
6 sun_dt 本周周日日期 本周周日日期 bigint
7 month 年月 年月,yyyyMM格式 bigint
8 month_short 月份簡寫 月份簡寫,MM格式1~12 bigint
9 month_cn 月份中文名 月份中文名 一月…… string
10 quarter 季度 季度,yyyyQ1\2\3\4 string
11 quarter_short 季度 數字型 季度 數字型 1-4 bigint
12 quarter_cn 季度中文名 季度中文名 第一季度…… string
13 year 年份 年份,yyyy格式 bigint

2、次元表設計原則

次元的作用一般是查詢限制、分類彙總以及排序等,我們在進行次元表設計時,應當提前考慮:

(1)次元屬性盡量豐富,為資料使用打下基礎

比如淘寶商品次元有近百個次元屬性,為下遊的資料統計、分析、探查提供了良好的基礎。

(2)給出詳實的、富有意義的文字描述

屬性不應該是編碼,而應該是真正的文字。在間裡巴巴次元模組化中, 一般是編碼和文字同時存在,比如商品次元中的商品 ID 和商品标題、 類目 ID 和 類目名稱等。 ID 一 般用于不同表之間的關聯,而名稱一般用 于報表标簽

(3)區分數值型屬性和事實

數值型宇段是作為事實還是次元屬性,可以參考字段的一般用途。 如果通常用于查詢限制條件或分組統計,則是作為次元屬性;如果通常 用于參與度量的計算, 則是作為事實。比如商品價格,可以用于查詢約 束條件或統計價格區間 的商品數量,此時是作為次元屬性使用的;也可 以用于統計某類目 下商品的平均價格,此時是作為事實使用的。另外, 如果數值型字段是離散值,則作為次元屬性存在的可能性較大;如果數 值型宇段是連續值 ,則作為度量存在的可能性較大,但并不絕對,需要 同時參考宇段的具體用途。

(4)沉澱出通用的次元屬性,為建立一緻性次元做好鋪墊

有些次元屬性擷取需要進行比較複雜的邏輯處理,有些需要通過多表關聯得到,或者通過單表 的不同宇段混合處理得到,或者通過對單表 的某個字段進行解析得到。此時,需要将盡可能多的通用的次元屬性進 行沉澱。一方 面,可以提高下遊使用的友善性,減少複雜度;另一方面,可以避免下遊使用解析時由于各自邏輯不同而導緻口徑不 一緻。

(5)退化次元(DegenerateDimension)

在次元類型中,有一種重要的次元稱作為退化次元。這種次元指的是直接把一些簡單的次元放在事實表中。退化次元是次元模組化領域中的一個非常重要的概念,它對了解次元模組化有着非常重要的作用,退化次元一般在分析中可以用來做分組使用。

(6)緩慢變化維(Slowly Changing Dimensions)

次元的屬性并不是始終不變的,它會随着時間的流逝發生緩慢的變化,這種随時間發生變化的次元我們一般稱之為緩慢變化維(SCD),緩慢變化維一般使用代理健作為次元表的主健。

緩慢變化維的三種處理方式:

① TYPE1 直接覆寫原值

适用于:不看曆史資料,簡單粗暴

​​

一篇文章搞懂資料倉庫:次元表(設計原則、設計方法)

​​

② TYPE2 拉連結清單

需要在次元行再增加三列:有效日期、截止日期、行辨別(可選)。

在舊的一行資料增加關鍊時間(end_date),新的一行資料增加開鍊時間和關鍊時間,多條資料加起來是一個完整的時間周期。

​​

一篇文章搞懂資料倉庫:次元表(設計原則、設計方法)

​​

③ TYPE3 增加屬性列

​​

一篇文章搞懂資料倉庫:次元表(設計原則、設計方法)

​​

3、次元表設計方法

  • 第一步:選擇次元或建立次元。作為次元模組化的核心,在企業級數 據倉庫中必須保證次元的唯一性。以淘寶商品次元為例,有且隻允許有 一個次元定義。
  • 第二步:确定主維表。此處的主維表一般是 ODS 表,直接與業務 系統同步。以淘寶商品次元為例, s_auction_auctions 是與前台商品中心 系統同步的商品表,此表即是主維表。
  • 第三步:确定相關維表。資料倉庫是業務源系統的資料整合,不同業務系統或者同 一業務系統中的表之間存在 關聯性。根據對業務的梳 理,确定哪些表和主維表存在關聯關系,并選擇其中的某些表用于生成次元屬性。
  • 第四步 :确定次元屬性。本步驟主要 包括兩個階段,其中第 一 個階 段是從主維表 中選擇次元屬性或生成新的次元屬性;第 二個階段是從相 關維表中選擇次元屬性或生成新 的次元屬性。以淘寶商品次元為例,從 主維表 (s_auction_auctions)和類目、 SPU、賣家、店鋪等相關維表中 選擇次元屬性或生成新 的次元屬性。

參考文獻:阿裡巴巴大資料之路