COMP9318主要涉及的是數據分析機器學習的算法,第二週第三週Wei Wang主要介紹的便是Data Warehouse (數據倉庫)。
本文是個人學習筆記,框架按照Wei Wang的課程課件和講述設計,以考試複習爲目標導向。
如果錯誤,歡迎大家指正交流
Why and What are Data Warehouses?
要了解數據倉庫,首先我們必須要瞭解當數據分析中會面對的一些問題
數據分析所面對的問題
- 不同系統中的相同數據
數據分析的數據通常都是整合而來,比如提交給數據分析部門的數據可能來自公司的公關部,財務部等等不同部門,老王舉的例子是瑞幸咖啡,觀察他們的財報我們會發現,同樣的詞語可能在不同的部門會有不同的定義和概念(或者相反),比如同樣的單詞"Year",可能在有些部門就是公曆年,有些部門就是財年,詞語“季度”,有些可能是"quater",有些是"season",這會導致整合數據的時候出現問題.
- 異構數據源
有過數據分析建模的同學可能都知道,我們在建模是所使用的“數據集”通常都是一個或者多個相同結構的數據,比如最常用的".csv",“txt”,但是在實際數據分析中,我們的“數據集”來源不一定會有一個統一的格式,他可能是log文件,可能是relational database等等,缺乏一致性,如果我們利用這些數據整合做數據分析,數據的處理會很麻煩
- 數據更適合用於操作的系統
這個不太明白…簡而言之就是,有些數據不適用於數據分析,而更加適用於日常事務操作
- 數據質量差
這個是建模過程中很常見的問題,數據缺失,不準確等等
- 數據"易揮發"
在公司的許多業務部門中,他們更關注的是日常的操作和事務處理而無需關注更大的決策,出於此目的,他們儲存的數據通常會在6個月後被更新,換言之,在操作的環境下,數據會隨時間變化。這就導致了比如我想分析公司這一年以來的總收入支出變化,我就無法獲取到半年以前的數據。
Data Warehouse ———爲數據分析及決策而生
數據倉庫的定義
數據倉庫並沒有嚴格的定義,COMP9318這門課採取的是W.H.Inmon的定義,即:
“”
A data ware house is a subject-oriented, integrated, time-variant, and nonvolatile collection of data in support of management’s decision-making process.
“”
數據倉庫同樣是數據庫一種,但是區別於傳統的用於事務操作的 operational system database(操作數據庫),它是集合了各種應用系統並且以一個統一的形式存儲數據的平臺,爲數據分析提供了極大的便利,因此,可以說data warehouse是爲基於數據分析的決策而生的數據庫
數據倉庫的特性(記住)
- Subject-oriented 面向主題
面向決策的數據分析通常是侷限於某個特定的領域(subject),比如績效,利潤構成, 風險分析等,所以數據倉庫會排除決策中無效的數據,提供針對數據決策者簡單而準確,圍繞特定主題的數據視圖,
- Intergrated 集成化
數據倉庫的數據來源 多樣且異構(multiple and heterogeneous,通常是relational database, flat file, on-line transaction。
這些不同來源的數據需要通過data cleaning and integration 技術保證數據在命名約定(naming conventions),編碼結構(encoding structure),屬性度量(atrribute measures) 上的一致性。
值得一提的是,也正是因爲數據來源不一,整合過後的數據會缺乏連續性的,如果數據發生錯誤,錯誤的溯源將會非常麻煩。
- Time Variant 時變
- 數據倉庫的時間範圍比操作性數據庫大得多,前者存儲着過去5到10年的歷史信息,而後者更新快,存儲的是近期的數據。
- 數據倉庫中每個key structure 都會隱式或者顯式的包含時間元素, eg timestamp, year, 也就是說幾乎所有的數據倉庫都有一個time dimension。
- 基於前兩點,數據倉庫可以捕捉現實世界在特定時間點的情況,比如對於圖書商,可以查看某本書現在的銷售量,也可以查看去年同時期的銷售量, 也可以捕捉現實世界的變化,比如檢測某商店擴大店面後銷售額變化以及店面面積對銷售額的影響
- Non-Volatile 不易失
- 數據倉庫是數據的物理分離存儲(physically separate store),這些數據由操作環境產生
- 數據倉庫環境中的操作更新數據不會發生(除非有非常嚴重的錯誤)。 數據倉庫沒有也無需 事務處理,恢復,併發控制機制,通常只需要兩種操作:初始化加載數據(nitial loading of data),訪問數據(access of data)
數據倉庫架構
未完待續…
數據轉移到數據倉庫中時不是簡單的copy,而是ETL
aggregation 是transformation一部分
batch loading 不是實施load
for paticular subject
提取的時候需要知道具體需要哪些數據
不用知道細節when load
pre-aggregate 成特定的格式data-cube(一種更加複雜的materialized view),可以提升aggregation語句的效率