1. 程式人生 > 其它 >按鍵測試測試

按鍵測試測試

數倉分層

  按照資料流入流出過程,數倉架構可分為:源資料,資料倉庫,資料應用

   資料倉庫的資料來源於不同的源資料,並提供多樣的資料應用,資料自下而上流入資料倉庫後向上層開放應用,而資料倉庫只是中間整合化資料管理的一個平臺;

  源資料:此層資料無需任何更改,直接沿用外圍系統資料結構和資料,不對外開放;為臨時儲存層,是介面資料的臨時儲存區域,為後一步的資料處理做準備;

  資料倉庫:也稱細節層,DW層的資料應該是一致的,準確地,乾淨的資料,即對源系統資料清洗後的資料;

  資料應用:前端直接讀取的資料來源,根據報表,專題分析需求而計算生成的資料;

  資料倉庫從各個資料來源獲取資料及在資料倉庫內的轉換和流動都可以認為是ETL,(抽取Extra,轉換Transfer,裝載Load)的過程,ETL是資料倉庫的流水線,也可以認為是資料倉庫的血液,它維繫著資料倉庫中資料的新陳代謝,資料倉庫日常大部分工作都是保持ETL的正常和穩定;

那麼數倉分層的真正原因:

  1.用空間換時間:通過大量的預處理來提升應用系統的使用者體驗(效率),因此資料倉庫存在大量的資料冗餘,如果不分層,源系統業務規則發生變化將影響整個資料清洗過程,增加極大工作量;

  2.通過數倉分層簡化資料清洗過程:將一個步驟分為多個步驟去完成,相當於把一個複雜的工作拆分為多個簡單的工作,將一個大黑盒變成白盒,每層的處理邏輯相對簡單和容易理解,這樣不僅可以保證每個步驟的正確性,當資料發生錯誤的時候,我們只需要區域性調整某個步驟即可;

主要數倉結構

  1.資料集市架構

  資料集市是按主題域組織的資料集合,用於支援部門級的決策,有兩種型別的資料集市 獨立資料集市和從屬資料集市;

  1.獨立資料集市

  獨立資料集市集中於部門所關心的單一主題域,資料以部門為基礎部署,無需考慮企業級別的資訊共享與整合;例如:製造部門,人力資源部門各自有自己的資料集市;

 優點:因為一個部門業務相對於整個企業要簡單,資料量也小很多,所以部門的獨立資料集市會有周期短,見效快的特點;

 缺點:

  .從業務角度看,當部門的分析需求擴充套件,或者需要分析跨部門或跨主題域的資料時,獨立資料市場會顯得力不從心;

  .當資料存在歧義,比如同一個產品,在A與B部門定義不同時,將無法在部門間進行資訊比較;

  .每個部門使用不同的技術,建立不同的ETL過程,處理不同的事務系統,而在多個數據集市之間還會存在資料的交叉與重疊,甚至會與資料不一致的情況;

2.從屬資料集市

  從屬資料集市的資料來源於資料倉庫,資料倉庫將資料經過整合,重構,彙總後傳遞給從屬資料集市(資料內容從資料倉庫中得到而並不直接來自外部資料來源的資料集市);

 建立資料集市的好處:

  .效能:當資料倉庫的查詢效能出現問題,可以考慮建幾個從屬資料集市,將查詢從資料倉庫移出到資料集市;

  .安全:每個部門可以完全控制他們自己的資料;

  .資料一致:因為每個資料集市的資料來源都是同一資料倉庫,有效消除了資料不一致的情況;

2.Inmon企業工廠架構

  

   企業級資料倉庫:該架構的核心元件,正如Inmon資料倉庫所定義的,企業級資料倉庫是一個細節資料的整合資源庫,其中的資料以最低級別粒度被捕獲,儲存在滿足三正規化的關係型資料庫;

  部門級資料集市:是面向主題資料的部門級檢視,資料從企業級資料倉庫直接獲取;資料在進入部門資料集市時可能進行聚合,資料集市是使用多維模型設計,用於資料分析;重要的一點,所有的報表工具,BI工具等都是從資料集市查詢資料,而不是之間訪問企業級資料倉庫;

3.Kimball資料倉庫架構

  

   對比Inmon架構可以看出,兩種架構主要區別在於核心資料倉庫的建立設計和建立;

  Kimball的資料倉庫包含高粒度的企業資料,使用多維模型設計,這也意味著 資料倉庫由星型模式的維度表和事實表構成;分析系統或報表工具可以直接訪多維資料庫中的資料;

  在此架構中的資料集市與Inmon架構的不同,這裡的資料集市是一個邏輯概念,只是多維資料倉庫中的主題域劃分,並沒有自己的物理儲存,也可以說是虛擬的資料集市;

4.混合型資料倉庫架構

  混合型資料倉庫:指在一個數據倉庫環境中,聯合使用Inmon與Kimball兩種架構;

   從架構圖可以看到,這種架構將Inmon方法中的資料集市替換成一個多維資料倉庫,而資料集市則是多維資料倉庫上的邏輯檢視;

  架構優點:既可以利用規範化設計消除資料冗餘,保證資料的粒度足夠細,又可以利用多維結構更靈活的在企業級實現報表分析;

資料倉庫元資料管理

元資料(Meta date),主要記錄資料倉庫中模型的定義,各層級間的對映關係,監控資料倉庫的資料狀態及ETL的任務執行狀態;一般會通過元資料資料庫(Metadata Repository)來統一的儲存和管理元資料,其主要目的是使資料倉庫的設計,部署,操作和管理達成協同和一致;

元資料是資料倉庫管理系統的重要組成部分,元資料管理是企業級資料倉庫中的關鍵元件,貫穿資料倉庫構建的整個過程,直接影響資料倉庫的構建,使用和維護;

  .構建資料倉庫的主要步驟之一是ETL,這時元資料將發揮重要的作用,它定義了源資料系統到資料倉庫的對映,資料轉換規則,資料倉庫的邏輯結構,資料更新規則,資料匯入歷史記錄及裝載週期等相關內容,資料抽取和轉換的專家正及資料倉庫管理員正是通過元資料高效的構建資料倉庫;

  .使用者在使用資料倉庫時,通過元資料訪問資料,明確資料項的定義及定製報表;

  .資料倉庫的規模及其複雜性離不開正確的元資料管理,包括增加和移除外部資料來源,改變資料清洗方法,控制出錯的查詢及資料備份等;

  .元資料可分為技術元資料和業務元資料: 技術元資料為開發和管理資料倉庫的IT人員使用,它描述了與資料倉庫開發,管理和維護相關的資料,包括資料來源資訊,資料轉換描述,資料倉庫模型,資料清洗與更新規則,資料對映與訪問許可權;而業務元資料為管理層和業務分析人員服務,從業務角度描述資料,包括商務術語,資料倉庫有什麼資料,資料的位置和資料可用性等,幫助業務人員更好的理解資料倉庫中有哪些資料可用以及如何使用;

由此可見,元資料不僅定義了資料倉庫中資料的模式,來源,抽取和轉換規則等 ,而且是整個資料倉庫執行的基礎,元資料把資料倉庫中各個鬆散的元件聯絡起來,組成了一個有機的整體;

數倉常見術語解析

  

數倉名詞解釋

   1.實體

  .實體是指依附的主體,就是我們分析的一個物件,比如我們分析商品銷售情況,如華為手機近半年的銷量,那華為手機就是一個實體;分析使用者的活躍度,那使用者就是一個實體,實體也可以不是現實中真實存在的,例如虛擬的業務物件,活動,會員都可以看作一個實體;

  .實體的存在是為了業務分析,作為分析的一個篩選的維度,擁有描述自己的屬性,本身具有可分析價值;

  2.維度

  .維度就是看待問題的角度,分析業務資料,從什麼角度分析,就建立什麼樣的維度;所以維度就是對資料進行分析時所用的一個量,比如分析產品銷售情況,可以按商品類別進行分析,這就構成一個維度,把所有商品類別集合在一起就構成了維度表;

 .3度量

  .度量是業務流程節點上的一個數值,比如銷量,價格,成本等;

  .事實表中的度量可分為三類:完全可加,半可加,不可加

  .1.完全可加的度量是最靈活,最有用的,比如銷量,銷售額等,可以進行任意維度彙總;

  .2.半可加的度量可以對某些維度進行彙總,但不能對所有維度進行彙總,差額是常見的半可加度量,它除了時間維度外,可以跨所有維度進行加法操作;

  .3.還有一種是完全不可加的,例如:比率,對於這種不可加度量,一種最好的辦法就是儘可能儲存非可加度量的完全可加分量,並在計算出最終的非可加事實前,將這些分量彙總到最終的結果集;

 .4.粒度

  .粒度就是業務流程中對度量的單位,比如商品是按件記錄度量還是按批記錄;

  .在數倉建設中,我們說這是使用者粒度的事實表,那麼表中每行資料都是一個使用者,無重複使用者;例如還有銷售粒度的表,那麼表中每行記錄都是一條銷售記錄;

  .選擇合適的粒度級別是資料倉庫建設好壞的關鍵,在設計資料粒度時,通常需重點考慮以下因素:

   1.要接受的分析型別,可接受的資料最低粒度和能儲存的資料量;

   2.粒度的層次定義越高,就不能在該倉庫進行更細緻的分析;

   3.如果儲存資源有限,那隻能採取較高粒度劃分;

   4.資料粒度劃分策略一定要保證:資料的粒度確實能夠滿足使用者的決策分析需要,這是資料粒度劃分策略中最重要的一個準則;

  .5.口徑

  口徑即取數邏輯(如何取數的),比如要取得是10歲以下兒童中男孩的平均身高,這就是統計的口徑;

  .6.指標

  指標是口徑的衡量值,也就是最後的結果,比如最近7天的訂單量,一個促銷活動的購買轉化率等,一個指標具體到計算實施,主要有以下幾部分組成:

  .指標加工邏輯,如count,avg,sum等

  .維度,如按部門,地域統計,相當於group by

  .業務限定/修飾詞,比如以不同渠道來算對應指標,微信支付退款率,支付寶支付退款率,相當於sql中的where;

  除此之外指標本身還可以衍生,派生出更多的指標,基於這些特點,可以將指標分類:

  .原子指標:基本業務事實,沒有業務限定,沒有維度;比如訂單表中的訂單量,訂單總額都算原子指標;

    業務更關心的指標,是有實際業務含義的,可以直接取數的指標,比如店鋪近一天的訂單支付金額就是派生指標,會被直接在產品上展示給商家看;

    但是這個指標卻不能直接從數倉的統一中間層取數,(因為沒有現成的事實欄位,數倉一般都是大寬表),需要有一個橋樑連線數倉中間層和業務方的指標需求,於是有了派生指標

  .派生指標:維度+修飾詞+原子指標,店鋪近一天銷售額,其中店鋪是維度,近一天是時間型別修飾詞,支付金額是原子指標;

    維度:觀察各項指標的角度;

    修飾詞:維度的一個或某些值,比如維度性別下,男和女就是2種修飾詞;

  .衍生指標:比如某一個促銷活動的轉化率就是衍生指標,因為需要促銷投放人數和促銷訂單數指標進行計算得出;(需要預先計算的其他指標轉化得出的指標)

  .7.標籤

  .標籤是人為設定的根據業務場景需求,對目標物件運用一定的演算法得到的高度精煉的特徵標識,可見標籤是經過人為再加個後的結果,如網紅,白富美,蘿莉;對於有歧義的標籤,我們內部可以進行標籤區分,比如蘋果,我們可以定義蘋果為水果,蘋果手機才指手機;

  .8.自然鍵

  .由現實中已存在的鍵組成,它在業務中是唯一的,並具有一定的業務含義,比如商品ID,員工ID;從數倉角度看,來源於業務系統的識別符號就是自然鍵,比如業務庫中員工的編號;

  .9.持久鍵

  .保持永久性不會發生變化,有時也被叫做超自然持久鍵,例如身份證號;

  .自然鍵和持久鍵區別:例如某員工離職後重新入職,那麼他的員工編號就是自然鍵,發生了變化,但是他的持久鍵身份證號是不會變的

  .10.代理鍵

  .就是不具有業務含義的鍵,代理鍵有許多其他的稱呼:無意義鍵,整數鍵,非自然鍵,人工鍵,合成鍵等;

  .代理鍵就是簡單的以按照順序序列產生的整數表示,產品行的第一行代理鍵為1,下一行為2,依次進行;代理鍵的作用僅僅是連線維度表與事實表

  .11.退化維度

  .退化維度,就是那些看起來像是事實表的一個維度關鍵字,但事實上並沒有其對應的維度表,就是維度屬性儲存到事實表中,這種儲存到事實表的維度稱為退化維度,與其他儲存在維度表中的維度一樣,退化維度也可以用來進行事實表的過濾查詢,實現聚合操作等;

  .那麼如何定義退化維度呢,比如訂單ID,這種量級很大的維度,沒必要用一張維度表來儲存,而我們進行資料查詢或者資料過濾的時候又很重要,所以這種就冗餘在事實表裡,這種就叫退化維度,如citycode這種我們也會冗餘在事實表裡,但是他有對應的維度表,所以他不是退化維度;

  .12.下鑽

  .這是在資料分析中常見的概念,下鑽可以理解為增加維的層次,從而可以由粗粒度到細粒度來觀察資料,比如對產品銷售情況分析時,可以沿著時間線從年到月再到日維度等;

  .13.上卷

  .知道了下鑽,上卷就容易理解了,它倆是 相逆的操作,上卷可以理解為刪掉某些維的某些層,由細粒度到粗粒度觀察資料的操作或沿著維度進一步向上聚合彙總資料;

  .14.資料集市

  .資料集市(Data Mart),也叫資料市場,資料集市就是滿足特定部門或者使用者的需求,按照多維方式進行儲存,包括定義維度,需要計算的指標,維度的層次等;生成面向決策分析需求的資料集,本質就是從資料倉庫抽出的一個小合集;

數倉名詞之間的關係

  1.實體表,事實表,維度表之間的關係

  .在Kimball維度建模中有維度和事實,在Inmon正規化建模有實體與關係,如果分開兩種建模方式看這些概念比較容易理解,但目前也有很多混合建模方式,兩種建模結合起來看容易記得混亂,尤其是事實表與實體表

    .1維度表:維度表可以看成是使用者用來分析一個事實的視窗,它裡邊的資料應該是對事實的各個方面的描述,比如時間維度表,地域維度表,維度表是事實表的一個分析角度;

    .2.事實表:事實表就是通過各種維度及指標組合來確定一個事實,比如通過時間維度,地域維度,指標值可以去確定某時某地的一些指標值怎麼樣的事實,事實表的每條資料都是幾條維度表的資料與指標值交會得到的;

    .3.實體表:實體表就是一個實際物件的表,實體表放的資料一定是一條條客觀存在的事物資料,比如各種商品,它是客觀存在的,所以可以將其設計成一個實體表;實體表只描述各種事物,並不存在具體的事實,所以可以稱實體表是無事實的事實表;(無事實即無確定的可度量資料,沒得指標可以算,我理解實體表中資料是唯一的)

    舉個栗子:比如商場有蘋果手機,華為,小米等手機,這些資料可以組成一個手機實體表,但是表中沒有可度量的資料,某一天,華為賣了20臺,小米賣了10臺,這些銷售資料屬於事實,組成一個事實表,這樣就可以使用日期維度表與地域維度表對這個事實表進行各種維度分析;

  2.指標與標籤的區別

  .概念不同

  指標是用來定義,評價和描述特定事物的一種標準或方式,比如:新增使用者數,累計使用者數,使用者活躍率等是衡量使用者發展情況的指標;

  標籤是人為設定的,根據業務場景需求,對目標物件運用一定的演算法得到高度精煉的特徵標識,可見標籤是經過人為再加工後的結果,如網紅,白富美,蘿莉;

  .構成不同

  指標名稱是對事物質與量兩方面特點的命名;指標取值是指標在具體時間,地域,條件下的數量表現,如人的體重,指標名稱是體重,指標的取值就是120斤;

  標籤名稱通常都是形容詞+名詞的結構,標籤一般是不可量化的,通常是孤立的,除了基礎類標籤,通過一定演算法加工出來的標籤一般都沒有單位和量綱,如將超過200斤的稱為大胖子;

  .分類不同

  .對指標的分類:

    .按照指標計算邏輯,可以將指標分為原子指標,派生指標,衍生指標三類;

    .按照對事件描述內容的不同,分為過程性指標和結果性指標;

  .對標籤的分類

    .對照標籤的變化性分為靜態標籤和動態標籤;

    .按照標籤的指代和評估指標不同,可分為定性標籤和定量標籤;

    指標:最擅長的應用是監測,分析,評價和建模;

    標籤:最擅長的應用是標註,刻畫,分類和特徵提取;

    對結果的標註也是一種標籤,所以在自然語言處理和機器學習相關的演算法應用場景下, 標籤對監督式學習有重要價值,只是單純的指標難以做到的,而指標在任務分配,績效管理等領域的作用也是標籤無法做到的;

  3.維度和指標的區別與聯絡

  .維度就是資料的觀察角度,即從哪個角度取分析問題,看待問題;

  .指標是在維度的基礎上去衡算這個結果的值;

  .維度一般是一個離散的值,比如時間維度上每一個獨立的日期或者地域,因此統計時,可以把相同維度的記錄聚合在一起,應用聚合函式做累加,均值,最大最小等計算;

  .自然鍵和代理鍵在數倉的使用區別

  .一般數倉中說維度表的唯一主鍵應該是代理鍵而不應該是自然鍵,有時建模人員不願意放棄使用自然鍵,因為他們希望用操作型程式碼查詢事實表,而不希望與維度表做連線操作;但實際上,應該避免使用包含業務含義的多維鍵,因為不論我們做出任何假設最終都可能變得無效,因為我們控制不了業務庫的變動;

  .所以資料倉庫中維度表與事實表的每個連線應該基於無實際含義的整數代理鍵,避免使用自然鍵作為維度表的主鍵;

  .資料集市和資料倉庫的關係

  .資料集市是企業級資料倉庫的一個子集,它主要面向部門級業務,並且只面向某個特定的主題,為了解決靈活性和效能之間的矛盾,資料集市就是資料倉庫體系結構中增加的一種小型的部門或工作組級別的資料倉庫,資料集市儲存為特定使用者事先計算好的資料,從而滿足使用者對效能的需求,資料集市可以一定程度上緩解訪問資料倉庫的瓶頸;

  .資料集市和資料倉庫的主要區別:資料倉庫是企業級的,能為整個企業各個部門的執行提供決策支援手段,而資料集市則是一種微型的資料倉庫,它通常有更少的資料,更少的主題域,以及更少的歷史資料,因此是部門級的,一般只能為某個區域性範圍內的管理人員服務,因此也稱為部門級資料倉庫;

離線數倉建設核心

  資料倉庫的核心是展現層和提供優質的服務,ETL及其規範,分層等所作的一切都是為了展現一個更清晰易用的展現層;

  1.數倉分層

  數倉分層原則:

    1.便於資料分析,要遮蔽底層複雜業務,簡單完整,整合的將資料暴露給分析層;

    2.底層業務變動對模型衝擊最小化,業務系統變化影響削弱在基礎資料層,結合自上而下的建設方法削弱需求變動對模型的影響;

    3.高內聚鬆耦合,即主題之內或各個完整意義的系統內資料的高內聚,主體之間或各個完整意義的系統間資料的鬆耦合;

    4.構建倉庫基礎資料層,使底層業務資料整合工作與上層應用開發工作相隔離,為倉庫大規模開發奠定基礎 倉庫層次更加清晰,對外暴露資料更加統一;

  一般採取如下分層結構:

  

  1.資料來源層:ODS

  ODS層,最接近資料來源中資料的一層,為了考慮以後可能要追溯資料的問題,因此對這一層就不建議做過多的資料清洗工作,原封不動接入原始資料即可;至於資料的去噪,去重,異常值處理等過程可以放在後邊的DWD層來做;

  2.資料倉庫層:DW(Data Warehouse)

  資料倉庫層是資料倉庫的核心層,在這裡,從ODS層獲得的資料按照主題建設各種資料模型;

  DW層又細分為DWD層,DWM層和DWS層

  1).資料明細層:DWD

    該層一般保持和ODS層一樣的資料粒度,並且提供一定的資料質量保證,DWD層要做的就是將資料清理,整合,規範化,髒資料,垃圾資料,規範不一致的,狀態定義不一致的,命名不規範的資料都會被處理;

    同時,為提高資料明細層的易用性,該層會採取一些維度退化的手法,將維度退化至事實表中,減少事實表與維度表的關聯; 

    另外,該層也會做一部分的資料聚合,將相同主題資料彙集到一張表中,提高資料的可用性;

  2).資料中間層:DWM

    該層會在DWD層資料基礎上,資料做輕度聚合操作,生成一系列的中間表,提升公共指標的複用性,減少重複加工;  

    直觀說就是,對通用核心維度進行聚合操作,算出相應的統計指標;

    在實際計算中,如果直接從DWD或ODS計算出寬表的統計指標,會存在計算量太大並且維度太少的問題,因此一般做法是,在DWM層計算出多個小的中間表,然後再拼成一張DWS的寬表,由於寬和窄的界限不易界定,也可以去掉DWM這層,只留DWS層,將所有資料放在DWS即可;

  3)資料服務層:DWS

    DWS層為公共彙總層,會進行輕度彙總,粒度比明細資料稍粗,基於DWD層的基礎資料,整合彙總某一主題域的服務資料,一般是寬表,DWS層應覆蓋80%的應用場景,又稱資料集市或寬表;

    按照業務劃分,如主題域流量,訂單,使用者等,生成欄位比較多的寬表,用於提供後續的業務查詢,OLAP分析,資料分發等;

    一般來講,該層的資料表會相對較少,一張表涵蓋比較多的業務內容,由於其欄位較多,因此一般也稱該層的表為寬表;

  3.資料應用層:APP(ADS)

  在這裡,主要是提供給資料產品和資料分析使用的資料,一般會存在ES,PostgreSql、Redis等系統供線上系統使用,也可能存在Hive或者Durid中供資料分析和資料探勘使用;比如我們的報表資料,一般就放在這裡;

  4.維表層:DIM

  如果維表過多,也可針對維表單獨設計一層,維表主要包含兩部分資料:

  高基數維度資料:一般是使用者資料表,商品資料表類似的資料表.資料量可能是千萬或者上億級別;

  低基數維度資料:一般是配置表,比如列舉值的中文含義,或者日期維表,資料量可能是個位數或者幾千幾萬;

2.數倉建模方法

  數倉建模在哪層建設呢,以維度建模為例,建模是在資料來源層的下一層進行建設,在分層架構中,就是在DW層進行數倉建模,所以DW層是數倉建模的核心;

  那,數倉建模究竟如何建,數倉建模方法有很多種,每一個建模都代表哲學上的一個觀點,代表了歸納,概況世界的一種方法,常見的有正規化建模法,維度建模法,實體建模法等,方法的本質是從不同的角度看待業務中的問題;

  1.正規化建模法

    正規化建模法,正規化建模法是我們在構建資料模型中常用的一個方法,該方法主要由Inmon所提倡,主要解決關係型資料庫中的資料儲存,利用的一種技術層面上的方法,目前,我們在關係型資料庫中的建模方法,大部分採用的 是三正規化建模法;

    正規化是符合某一種級別的關係模式的集合,構造資料庫必須遵守一定的規則,而在關係型資料庫中這種規則就是正規化,這一過程也被稱為規範化,目前關係型資料庫中有六種正規化:第一正規化(1NF),第二正規化(2NF),第三正規化(3NF),Boyce-Code正規化(BCNF),第四正規化(4NF)和第五正規化(5NF);

    在資料倉庫的模型設計中,一般採用第三正規化,一個符合第三正規化的關係必須具有以下三個條件:

    .每個屬性值唯一,不具有多意性;

    .每個非主屬性必須依賴於整個主鍵,而非主鍵的一部分;

    .每個非主屬性不能依賴於其他關係中的屬性,因為這樣的話,這種屬性應該歸到其他關係中去;

     正規化建模

    根據Inmon的觀點,資料倉庫模型的建設方法和業務系統的企業資料模型類似,在業務系統中,企業的資料模型決定了資料的來源,而企業資料模型也分為兩個層次,即主題域模型和邏輯模型,同樣,主題域模型可以看成是業務模型的概念模型,而邏輯模型則是域模型在關係型資料庫上的例項化;

  2.維度建模法

    維度模型是資料倉庫領域另一位大師Ralph Kimall所倡導,他的"資料倉庫工具箱"是資料倉庫工程領域最流行的數倉建模經典;維度建模以分析決策的需求出發構建模型,構建的資料模型為分析需求服務,因此它重點解決使用者如何更快速完成分析需求,同時還有較好的大規模複雜查詢的響應效能;

 典型的代表是我們熟知的星型模型,以及在一些特殊場景下適用的雪花模型;

維度建模中重要的概念就是事實表和維度表;其最簡單的描述就是,按照事實表,維度表來構建資料倉庫,資料集市;

  3.實體建模法

      實體建模法並不是資料倉庫建模中一個常見的方法,它來源於哲學的一個流派,從哲學的意義上說,客觀的世界是可以細分的,客觀世界可以由一個個實體,實體與實體間的關係構成,那麼我們在資料倉庫的建模過程中完全可以引入這個抽象的方法,將整個業務也可以劃分成一個個的實體,而每個實體間的關係,以及針對這些關係的說明就是我們資料建模要做的工作;

    雖然實體法粗看有些抽象,但我們可以將一個業務過程劃分為3個部分,實體,事件,說明,如下圖所示:

  

     實體建模:如上圖,我們描述一個簡單的事實,小明開車去上學;以這個業務事實為例,我們可以把小明,學校看成是一個實體,上學我們可以抽象為一個具體的事件,而開車去可以看成事件的一個說明;

 3.維度建模詳解

  目前大多公司都用的建模方法為維度建模,維度建模是專門應用於分析型資料庫,資料倉庫,資料集市建模的方法,資料集市可以理解為是一種小型資料倉庫;

  在建模前,先了解維度建模中表的型別及維度建模的模式

  1.維度建模中表的型別

  維度建模分為兩種表:事實表和維度表

    1.事實表:必然存在的一些資料,像採集日誌檔案,訂單表,都可以作為事實表;

    特徵:是一堆主鍵的集合,每個主鍵對應維表中的一條記錄,客觀存在的,根據主題確定出需要使用的資料;

    2.維度表:維度就是所分析的資料的一個量,維度表就是以合適的角度來建立的表,分析問題的一個角度:時間,地域,使用者等角度

  1.事實表

  發生在現實世界中的操作型事件,其所產生的可度量數值,儲存在事實表中,從最低的粒度級別來看,事實錶行對應一個度量事件,反之亦然;

  事實表表示對分析主題的度量,比如一次購買行為我們就可以理解為是一個事實;

 如圖中的訂單表就是一個事實表,可以理解為它就是在現實中發生的一次操作型事件,我們每完成一個訂單,就會在訂單中增加一條記錄,事實表的特徵:表裡沒有存放實際的內容,它是一堆主鍵的集合,這些ID分別對應到維度表中的一條記錄,事實表包含了與各維度表關聯的外來鍵,可與維度表關聯;事實表的度量通常是數值型別,且記錄會不斷增加,表資料規模迅速增長;

明細表(寬表):

  事實表的資料,有些屬性共同組成一個欄位(糅合在一起),比如年月日時分秒構成了時間,當需要某一屬性進行分組統計時需要擷取拼接操作,效率不高,為了方便分析,可以將事實表的一個欄位切割提取出多個屬性構成新的欄位,因為欄位變多了,所以稱為寬表,原來的表稱為窄表; 又因為寬表的資訊更加清晰明細,所以也可以稱為明細表;

  事實表種類:

  事實表可分為以下6類:1.事務事實表,2.週期快照事實表,3.累計快照事實表,4.無事實的事實表,5.聚集事實表,6.合併事實表

  這幾種表的概念如下:

  .事務事實表:表中一行對應時間或空間上某點的度量事件,就是一行資料中必須有度量欄位,什麼是度量,就是指標,比如說銷售金額,銷售數量等這些可加的或者半可加的就是度量值,另一點就是事務事實表都包含一個與維度表關聯的外來鍵,並且度量值和事物粒度保持一致;

  .週期快照事實表:即每行都帶有時間值的欄位,代表週期,通常時間值都是標準週期,如某一天,某周,某月等,粒度是週期,而不是個體的事務,也就是說週期快照事實表中資料可以是多個事實,但它們都屬於某個週期內;

  .累計快照事實表:週期快照事實表是單個週期內的資料,而累計快照事實表是由多個週期數據組成,每行彙總了過程開始到結束之間的度量,每行資料相當於管道或工作流,有事件的起點,過程,終點,並且每個關鍵步驟都包含日期欄位,如訂單資料,累計快照事實表一行就是一個訂單,當訂單產生時插入一行,訂單發生變化時,這行就被修改;

  .無事實的事實表:以上討論的事實表度量是數字化的,當然實際應用中絕大多數都是數字化的度量,但是也可能會有少量沒有數字化的值,但是還很有價值的欄位,無事實的事實表就是為這種資料準備的,利用這種事實表可以分析發生了什麼;

  .聚集事實表:聚集就是對原子粒度的資料進行簡單的聚合操作,目的就是為了提高查詢效能,如我們需求是查詢全國所有門店的總銷售額,我們原子粒度的事實表中每行事實每個分店每個商品的銷售額,聚集事實表就可以先聚合每個分店的總銷售額,這樣彙總所有門店的銷售額時計算的資料量就會小很多;

  .合併事實表:這種事實表遵循一個原則,就是相同粒度,資料可以來自多個過程,但只要它們屬於相同粒度,就可以合併為一個事實表,這類事實表特別適合經常需要共同分析的多過程度量;

  維度表:

  每個維度表都包含單一的主鍵列,維度表的主鍵可以作為與之關聯的任何事實表的外來鍵,維度錶行的描述環境應與事實表完全對應,維度表通常比較寬,是扁平型非規範表,包含大量低粒度的文字屬性;

  維度表示你要對資料進行分析時所用的一個量,例如要分析產品銷售情況,你可以選擇按類別進行分析,或按區域進行分析,每個類別就構成一個維度,維度表一般都有一個唯一的主鍵,然後在表中存放了詳細的資料資訊;

  總體上,在資料倉庫中不需要嚴格遵守規範化設計原則,因為資料倉庫的主導功能就是面向分析,以查詢為主,不涉及資料的更新操作,事實表的設計是以能夠正確記錄歷史資訊為準則,維度表的設計是以能夠以合適的角度來聚合主題內容為準則;

    維度表結構

      維度表謹記一條原則,包含單一主鍵列,但有時因業務複雜,也可能出現聯合主鍵,但要儘量避免,如無法避免,也要儘量確保是單一的,如果維表的主鍵不是單一,和事實表關聯時會出現資料發散,導致最終結果出現錯誤;

      維度表通常比較寬,包含大量低粒度的文字屬性;

    跨表鑽取

      每個查詢的行頭包含相同一致性屬性時,將不同的查詢結果進行融合,排序等(意思是union之類的?)

      鑽取:上鑽:向著更高維度彙總資料;下鑽:向著更低維度檢視更詳細資料;

    退化維度

      退化維度就是將維度退回到事實表中,因為有時維度除了主鍵沒有其他內容,雖然也是合法維度鍵,但是一般都會退回到事實表,減少關聯次數,提高查詢效能;

    多層次維度

      多數維度包含不止一個自然層次,如日期維度可以從天到月週年的層次,所以有些情況下同一維度存在不同層次;

    維度表空值屬性

      當給定維度行沒有全部填充時,或者當存在屬性沒有被應用到所有維度行時,將產生空值維度屬性,上述兩種情況,推薦採用描述性字串代替空值,如使用unknown,不可用 替換空值;

    日曆日期維度

      在日期維度表中,主鍵的設定不要使用順序生成的ID來表示,可以使用更有意義的資料,比如將年月日拼接起來,即YYYYMMDD,或者更加詳細的精度;