iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 27
1
AI & Data

打造 Microsoft BI 資料服務平台系列 第 27

[27] : 設計資料模型的兩三事~設計模型時,有些事情應該要注意

2019/10/13

設計資料模型的時候,有一些注意事項或是小技巧,小提醒,想要告訴大家的,所以多寫了這一篇「設計資料模型的兩三事」。

這一篇最主要是希望告訴大家一些設計或規劃資料模型的時候,需要特別注意的地方,也把自己的一些小經驗寫在這邊提供大家參考。

首先,當然就是選擇資料模型的型態

這個我們講過很多次了,在設計資料模型之前,當然就一定要先選擇好你的資料模型架構,才能順利地往下開發設計你的資料模型,我們在選擇資料模型型態的時候,當然先從兩者差異的比較點選擇起,所以這裡列了主要的差異比較點讓大家比較容易記得比較的方法:

  1. Scalability (擴充性)
  2. Performance (執行效能)
  3. Time to Develop (開發時間)
  4. Complex Business Problem (商業問題的複雜度)
  5. Learning Curve (學習曲線)

Cube:屬性的關係(資料的關聯)

屬性的關係 (Attribute Relationship) 是設計 Cube 最重要的事情,因為資料的關係會影響到 Cube 的資料處理和資料查詢作業,最佳化 Dimension 就是最佳化屬性的關係,首先,會大大的降低 Cube 儲存空間,Dimension 處理的速度會更快,Cube 查詢的執行效率將會有所改進,所以最重要的事情就是要設計最佳化的屬性關係。

設計一個 Data Table

一般來說,我們在設計資料模型的維度時,第一個想到的維度一定是時間,很多資料都會需要從時間的視角來切割,過濾或查詢資料,所以,我們會建立一個通用的日期表格 (Date Table),他也會有 Master Data(主檔)的概念,使用這個通用的日期表格來關聯其他的資料表格,當作一個日期查詢主要切入的維度視角。我們也可以用多個 Date Tables 來對應到多個模型表格資料,Date Table 設計的時候需要注意一些事項:

  • 每天一筆記錄 (Row),不可以有中斷的日期,這樣我們統計或集成資料的時候才不會有錯誤
  • Date Table 之中比須包含一個 日期型態 (Date Type) 的欄位,讓資料庫用在日期計算函數之中使用的
  • Date Table 設計的時候要注意年度制(必須看看你的企業組織使用的年制是哪一種,如:7/1 為新年度)
  • Date Table 之中的欄位設計,我們會建立不同得時間顆粒度欄位(使用者視角所需要的時間顆粒度有哪些,我們就建立那些欄位)
  • 如果有不同的日期資料視野,我們會使用多個 Date Tables 來代表每一個 Date Role(如:財務和製造的日期維度分開)

使用數字來當作鍵值 (Key)

資料庫的查詢比對作業,如果是文字欄位,資料庫的資料抓取行為就需要多一個動作,比較慢,所以我們設計表格關聯的時候,使用的鍵值會盡量使用數字。

欄位的精細度 (granularity)

數字欄位的精細程度,視商業邏輯需求而定,但是我們不要把精細度設得太精密,只需要剛剛好符合商業需求即可,因為太高的精細度會影響資料庫計算的速度。

資料儲存 (Storage) 的設計

表格的設計不要太寬(欄位數過多),長(資料筆數多)沒有關係,大量資料的儲存盡量採用 Table Partition 的儲存設計方式,另外,也需要設計良好的 Cache 或 In-Memory 處理,常用的資料勁量放到記憶體中來處理及查詢,這樣會加快很多速度。

另外,還有一些資料模型最佳化的設計要點,列舉如下提供大家參考:
 盡可能刪除沒有用到的 tables or columns
 盡量避免欄位中的高基數 distinct counts(如:百萬個 distinct 值)
 盡可能使用整數 Integer 來代替字串 String
 小心使用 DAX functions 有一些 Function 會 Scan 所有的資料筆數,這樣會變慢很多
 Index 的設計影響很大,可以考慮 indexing columns(經常用來 filter or slice 的欄位)

PS : 其實,設計資料模型沒有一定的規則,也沒有誰對誰錯的問題,只要能正確處理資料,查詢資料,都是可用的資料模型,但是,好的資料模型和不好的資料模型之間,差異可是非常大的,執行速度,方便好用的分析,快速好用,甚至可能影響到資料查詢或分析上的複雜度,所以,設計一個良好的資料模型是非常重要的。


上一篇
[26] : 表格式資料模型~設計一個表格關聯式的資料模型開發步驟
下一篇
[28] : Case Study~錯誤示範篇:先做再說,疊層架屋變成怪獸行動緩慢,打掉重練
系列文
打造 Microsoft BI 資料服務平台30

尚未有邦友留言

立即登入留言