干貨筆記,數(shù)據(jù)倉庫工具箱(附電子書下載)
后臺回復(fù)【工具箱】
獲取電子書
---
《數(shù)據(jù)倉庫工具箱—維度建模的完全指南》是數(shù)據(jù)倉庫建模方面的經(jīng)典著作, 1996年第一版出版被認(rèn)為是數(shù)據(jù)倉庫方面具有里程碑意義的事件。作者kimballl是數(shù)據(jù)倉庫方面的權(quán)威,他將多年的數(shù)據(jù)倉庫建模實戰(zhàn)經(jīng)驗、技巧融入本書。他提出的許多維度建模概念被廣泛應(yīng)用于數(shù)據(jù)倉庫的設(shè)計和開發(fā)中。
以下筆記包含四個部分組織:
一、數(shù)據(jù)倉庫體系結(jié)構(gòu)和建模過程、技巧。 二、維度表建模技術(shù)。 三、事實表建模技術(shù)。 四、行業(yè)建模經(jīng)驗。
一、數(shù)據(jù)倉庫體系結(jié)構(gòu)和建模過程、技巧
關(guān)鍵點:數(shù)據(jù)倉庫體系結(jié)構(gòu)、維度建模的四個步驟、數(shù)據(jù)倉庫總線結(jié)構(gòu)、一致性維度。
1、對于數(shù)據(jù)倉庫來說,業(yè)務(wù)需求是第一位的。
2、數(shù)據(jù)倉庫的目標(biāo):
隨心所欲的訪問數(shù)據(jù)。直觀、明顯、簡單、易用、切割、合并、下鉆、上卷。 一致的展現(xiàn)數(shù)據(jù)(相對于原來從多個系統(tǒng)中出來的報表不一致)。 適應(yīng)性、擴展性、可維護(hù)性。 為領(lǐng)導(dǎo)決策提供支持。
3、數(shù)據(jù)倉庫的組成。源數(shù)據(jù)-->數(shù)據(jù)準(zhǔn)備區(qū)-->數(shù)據(jù)倉庫(維度建模)-->數(shù)據(jù)聚集區(qū)(OLAP)-->展現(xiàn)。其中原系統(tǒng)到數(shù)據(jù)準(zhǔn)備區(qū)屬于ETL過程。數(shù)據(jù)倉庫和數(shù)據(jù)聚集區(qū)本書稱為數(shù)據(jù)展示。展現(xiàn)本書稱為數(shù)據(jù)存取工具。
4、數(shù)據(jù)倉庫應(yīng)特別注意的幾點特點:
數(shù)據(jù)應(yīng)該以維度的形式進(jìn)行展示、存儲和訪問。 數(shù)據(jù)倉庫中必須包含詳細(xì)的原子數(shù)據(jù)。 必須采用共同的維度和事實表來建模。
5、數(shù)據(jù)倉庫采用使用維度建模的好處:易理解、查詢的高性能、修改的靈活性和可擴充性。
6、維度建模的擴展性。表現(xiàn)在三個方面:
在現(xiàn)有的事實表中增加維度。 在事實表中增加事實。 在維度表中增加屬性。(第一章)
7、維度模型設(shè)計的四個步驟。
選取業(yè)務(wù)(主題)。 定于業(yè)務(wù)處理的粒度。 選擇維度。 選擇事實。
8、應(yīng)優(yōu)先為模型選擇有原子性的信息,因為原子性的數(shù)據(jù)提供了最大限度的靈活性,可以接受任何可能形式的約束。(第二章)
9、數(shù)據(jù)倉庫總線結(jié)構(gòu)。實際上是一種增量建模方式,通過一致性維度來集成數(shù)據(jù)中心。數(shù)據(jù)總線矩陣:業(yè)務(wù)處理、公共維度。一級數(shù)據(jù)中心:衍生于單個基本源系統(tǒng)的數(shù)據(jù)中心,建議從一級數(shù)據(jù)中心開始建模,因為導(dǎo)致失敗的主要風(fēng)險是ETL。合并數(shù)據(jù)中心:合并多個位于不同源系統(tǒng)的一級數(shù)據(jù)中心。(第三章)
10、維度建模復(fù)查。考慮的問題:粒度,日期維度,退化維度,維度屬性采用名稱而不是編碼,代理關(guān)鍵字,維度的多少。
11、維度建模常犯的錯誤:
舍棄一致性維度和一致性事實表。 事實表的粒度不采用原子型。 基于報表來設(shè)計維度表。 不使用代理關(guān)鍵字。 忽視維度的變化的需求。 將體系與體系層次分解成多個維度。 在維度表中為節(jié)省空間而限制使用詳細(xì)的描述屬性。 在事實表中放置用于約束與分組操作的文本屬性。(第十五章)
12、數(shù)據(jù)倉庫成功的五個前提:
擁有精明、強干的業(yè)務(wù)用戶。用戶應(yīng)該對數(shù)據(jù)倉庫具有獨特的見解,堅信數(shù)據(jù)倉庫項目具有實現(xiàn)的價值。 機構(gòu)必須存在建立數(shù)據(jù)倉庫堅實而有說服力的業(yè)務(wù)動機。 數(shù)據(jù)倉庫的可用性。 業(yè)務(wù)用戶與IT人員之間的溝通。 業(yè)務(wù)分析人員的分析文化,是基于圖形、數(shù)據(jù)還是直覺、傳聞和一時沖動。(第十六章)
二、維度表建模技巧
關(guān)鍵點:退化維度、代理關(guān)鍵字、一致性維度、漸變維度、角色模仿、雜項維度、微型維度、深度可變的層次建模方法、審計維度、多值維度解決辦法、異構(gòu)產(chǎn)品解決辦法。
1、維度表傾向于將行數(shù)做得相當(dāng)少,而將列數(shù)做的特別大。數(shù)據(jù)倉庫的能力直接與維度表的屬性的質(zhì)量和深度成正比。
2、維度的屬性采用文字而不是編碼。
3、維度表通常是不規(guī)范的,幾乎總是用空間換取簡明性和可訪問性。(第一章)
4、日期維度,應(yīng)包含星期、周末指示符、月末指示符、節(jié)假日指示符、重大事件、財政時間等。
5、如果需要處理一天中不同時間,則增加一個時間維度。
6、一個維度包含多個體系(層次),每個層次包含若干級別。
7、退化維度。一方面可以通過退化維度對數(shù)據(jù)進(jìn)行分組,另一方面可以使用退化維度關(guān)聯(lián)到源數(shù)據(jù)上,有利于ETL更新及排錯。
8、一般情況維度個數(shù)應(yīng)該控制在15個以內(nèi),唯獨過多影響查詢性能和磁盤空間。一些小維度可以進(jìn)行組合,這取決于具體的業(yè)務(wù)。
9、代理關(guān)鍵字。使用代理關(guān)鍵字的優(yōu)點:能實現(xiàn)漸變維度;獲得性能上的優(yōu)勢,節(jié)省事實表空間;可以記錄沒有操作源碼的數(shù)據(jù)(ETL過程生成);處理關(guān)鍵字段的修改、刪除等。(第二章)
10、一致性維度。具有一致性的維度關(guān)鍵字,一致的屬性名稱,一致的屬性定義,一致的屬性值。一致性維度對于設(shè)計可以進(jìn)行集成的數(shù)據(jù)中心來說,具有絕對的決定性作用。(第三章)
11、漸變維度。漸變維度的處理辦法。
類型1:改寫屬性值; 類型2:添加維度行; 類型3:添加維度列。
第二種類型最常用。
12、快變維度的處理辦法:將這些迅速變化的屬性分裂成一個或者多個單獨的維度。(第四章)
13、維度的角色模仿。在同一個維度表上通過視圖的形式建立多個維度。在實際運用中,很多OLAP工具都支持在同一個維度表上建多個維度,而并不需要建立視圖。
14、實體之間存在固定的,不隨時間變化的,強烈相關(guān)的關(guān)系時,顯然應(yīng)該將它們當(dāng)作單一維度進(jìn)行建模。
15、雜項維度。將標(biāo)志與指標(biāo)符從設(shè)計中剝離出來,將其封裝成一個或者多個雜項維度。(第五章)
16、將聚集事實放入維度表的優(yōu)缺點。優(yōu)點:查詢時可以對聚集屬性進(jìn)行約束。缺點:ETL過程變麻煩了。
17、雪花模型的使用場合:粒度懸殊,節(jié)省空間(屬性眾多)。
18、寬度變化的屬性集的處理辦法:拆分成兩個維度。Oracle數(shù)據(jù)庫不存在這個問題。
19、采用類型2的方式處理維度慢性變化時,應(yīng)該注意避免計數(shù)過度。
20、深化不變的體系結(jié)構(gòu)(層次、級別)。一個層次建立單獨的字段。如果某一個級別沒有值,就應(yīng)該用較低級別的屬性覆蓋該值。
21、深度可變的體系結(jié)構(gòu)。使用橋接標(biāo)來解決。父到子的每一條路徑都包含一行記錄,到其自身長度為0的路徑包含一行。實際上是把循環(huán)遞歸的過程通過表數(shù)據(jù)的形式實現(xiàn)。大量olap工具以提供了對小于64000個成員的中小尺寸維度中這些體系進(jìn)行導(dǎo)航操作得更加強勁的內(nèi)置功能支持。(第六章)
22、依照十五描述內(nèi)容在每行加入生效和截止日期標(biāo)記,可以將類型2漸變維度設(shè)計方案修改為允許自然的對維度在時間上進(jìn)行非常精細(xì)的切割。
23、審計維度。源系統(tǒng)的情況;抽取軟件的版本;抽取記錄數(shù);開始時間;完成時間等。
24、維度的屬性數(shù)量不確定時,使用關(guān)鍵詞支架維度。相當(dāng)于將橫表設(shè)計成縱表。使用union和intersect命令解決SQL跨行約束問題。(第八章)
25、維度類型:因果維度、多日期或時間標(biāo)記維度、退化維度、角色模仿維度、狀態(tài)維度、審計維度、雜項維度。
26、多值維度。概念:一個賬戶擁有多個客戶,一個客戶也可能擁有多個賬戶。解決辦法:橋接表。
27、異構(gòu)產(chǎn)品方案。概念:每種產(chǎn)品類型都有大量的專用屬性與度量事實不能為其他產(chǎn)品所用。解決方案:核心維度,定制維度,使用相同的代理關(guān)鍵字。采用支架結(jié)構(gòu)。(第九章)
28、日期維度。國別歷法的處理辦法,做成日期維度的支架。
29、多個時區(qū)日期的處理辦法,增加維度。(第十章)
30、多值維度解決方案。所謂多值維度是指一個事實表對應(yīng)多個值的維度,比如,住院結(jié)算事實表擁有多個疾病。通過組橋表來實現(xiàn)。組橋表可以增加起止時間來滿足住院漸變維度。可以增加加權(quán)因子來實現(xiàn)財務(wù)報表關(guān)于疾病的分類統(tǒng)計。
31、稀疏事實表的解決方案。事實維度表。實際上是縱表和橫表的設(shè)計思想。優(yōu)點:靈活、結(jié)構(gòu)簡單、節(jié)省空間。缺點:生成查詢、報表復(fù)雜、行間計算困難。
32、遲到維度行的處理辦法。所謂遲到維度是指某項屬性到當(dāng)前時間才知道其以前的值。通過漸變維度(類型2)的方法處理,在維度表中增加記錄并修改其他型的起止時間,在事實表中修改該維度的代理關(guān)鍵字。(第十三章)
三、事實表建模技術(shù)
1、事實表中的事實分為三種類型:可加性事實,半可加性事實,非可加性事實。
2、事實表的三種粒度:事務(wù),周期快照,累計快照。
3、事實表傾向于具有更多的行和更少的列。
4、事實表的主鍵應(yīng)采用復(fù)合主鍵,引入唯一的rowid關(guān)鍵字作為主鍵字并無什么優(yōu)點可言。(第一章)
5、明顯屬于不同粒度的事實必須放在單獨的事實表中。
6、將可計算得值作為事實的原因:消除用戶出錯的可能性,一致的引用它。例如,利潤=銷售額-成本額,將利潤作為一個事實而不是通過展現(xiàn)工具進(jìn)行計算得到。
7、非可加性的數(shù)據(jù)項盡量不要放到事實表中。例如,毛利潤率是非可加性數(shù)據(jù),不應(yīng)該保存在事實表中,應(yīng)保存分子和分母,再通過前端展現(xiàn)工具進(jìn)行計算得到。
8、非事實型事實表。解答什么促銷產(chǎn)品沒有賣出去的問題。建立一張非事實型事實表,促銷產(chǎn)品(周期快照)中每個商場的每隔促銷產(chǎn)品每天創(chuàng)建一行。再關(guān)聯(lián)銷售事實表來解決什么產(chǎn)品沒有賣出去這個問題。
9、事實表的粒度很關(guān)鍵,決定了維度模型的擴展性。過早匯總或者聚集處理必然限制對維度的增補。
10、半可加性事實。對特定的維度具有可加性,對其他維度不具有可加性。
11、周期快照事實表是最常見的庫存設(shè)計方案。
12、一致性事實。一致的事實定義,一致的測量單位。(第三章)
13、使用單個事實表(通過增加事務(wù)類型維度)還是多個事實表的選擇:
業(yè)務(wù)需求(目標(biāo)是降低復(fù)雜度,用最有效的形式將數(shù)據(jù)展示給用戶)。 業(yè)務(wù)處理的關(guān)聯(lián)性。 源系統(tǒng)。 維度是否完全一致。(第四章)
14、事實表的規(guī)范化。縱表和橫表的設(shè)計方式。優(yōu)缺點。事實設(shè)置顯得比較稀疏并且不在事實之間運算的情形是有用的。
15、不同粒度事實的處理辦法。例如,訂貨系統(tǒng)中的訂貨分列項事實表(基于產(chǎn)品)與裝運費(基于訂單)。兩種處理方式:
分配到細(xì)節(jié)層次(裝運費à產(chǎn)品)。 建立兩個事實表。優(yōu)先采用第一種方式。
16、累計快照。采用對整個訂單處理流程的分析感興趣,他們想了解產(chǎn)品的移動速度,累計快照很好的體現(xiàn)這種業(yè)務(wù)情景。適用:具有明確起止時間的短期處理應(yīng)用。
17、多個計量單位的處理辦法。將轉(zhuǎn)移因子寫入事實表。
18、三種事實粒度的比較:(第五章)
| 時間段 | 粒度 | 加載 | 更新 | 日期維度 | 事實 | |
| 事務(wù) | 時間點 | 每個事務(wù)一行 | 插入 | 不 | 事務(wù)日期 | 事務(wù)活動 |
| 周期快照 | 規(guī)律間隔 | 每段一行 | 插入 | 不 | 時間段終止日期 | 間隔事務(wù) |
| 累計快照 | 不確定跨度,一般短期 | 每個生命期一行 | 插入更新 | 行為發(fā)生時更新 | 關(guān)鍵環(huán)節(jié)多日期 | 生命周期性能 |
19、至今為止事實:應(yīng)該計算出來,而不是保存在事實表中。數(shù)字型事實必須與粒度保持一致。
20、事實的變化通過增加一行沖減記錄,而不是通過修改原事實數(shù)據(jù)。
21、事實的自由分段。通過分段定義表連接到事實表上,來靈活劃分和定義分段。分段事實字段需建索引。(第七章)
22、時間點結(jié)余建模。在事實表中增加最后標(biāo)記字段和事務(wù)結(jié)束結(jié)余來實現(xiàn)。使用事務(wù)表來代替日快照事實表。(第九章)
23、多個事實表粒度。不是很理解。(第十一章)
24、非事實型事實表。沒有度量值,記錄發(fā)生的事件。分為兩類。第一類記錄事件與大量維度實體同時出現(xiàn)的內(nèi)容進(jìn)行記錄。第二類,范圍表。可用來實現(xiàn)沒有發(fā)生的事件。Loap在分析沒有發(fā)生的事件方面做出了卓有成效的工作。(第十二章)
25、稀疏事實建模。將稀疏事實做成事實維度。縱表和橫表。
26、遲到的事實行的處理辦法。根據(jù)時間在各維度表中找到對應(yīng)的代理關(guān)鍵字,然后插入事實表中。(第十三章)
27、異構(gòu)產(chǎn)品事實表建模。建立一個核心事實表和一簇定制事實表。使用相同的代理關(guān)鍵字。
28、合并事實表。將兩個事實表通過公共的維度合并在一起。可以通過展現(xiàn)工具進(jìn)行合并。(第十五章)
--end--
掃描下方二維碼 添加好友,備注【交流】 可私聊交流,也可進(jìn)資源豐富學(xué)習(xí)群
