一国夜、概念
寬表:把多個(gè)維度的字段都放在一張表存儲(chǔ)减噪,增加數(shù)據(jù)冗余是為了減少關(guān)聯(lián),便于查詢,查詢一張表就可以查出不同維度的多個(gè)字段筹裕。
窄表:和我們MySql普通表三范式相同醋闭,把相同維度的字段組成一張表,表和表之間關(guān)聯(lián)查詢其他維度數(shù)據(jù)朝卒。
維度表:包含維度編碼和該維度下的多個(gè)屬性证逻。
事實(shí)表:包含一個(gè)業(yè)務(wù)事件的相關(guān)屬性。
二抗斤、寬表
2.1 寬表概念
寬表囚企,顧名思義,就是比普通的數(shù)據(jù)表寬的表瑞眼,比如數(shù)據(jù)庫(kù)表一龙宏,在數(shù)據(jù)庫(kù)中是五個(gè)字段,表二是四個(gè)字段伤疙,寬表就是把這兩個(gè)有業(yè)務(wù)聯(lián)系的表通過關(guān)聯(lián)字段弄到一個(gè)大表中银酗,這樣列數(shù)自然就變多了,表也就寬了徒像,所以就有了寬表黍特。
2.2 為什么要用寬表
業(yè)務(wù)人員在做數(shù)據(jù)分析時(shí),所需要的數(shù)據(jù)往往會(huì)存儲(chǔ)在數(shù)據(jù)庫(kù)的多張數(shù)據(jù)表中锯蛀,比如訂單表中存儲(chǔ)了訂單編號(hào)衅澈、商品編號(hào)、訂購(gòu)日期等谬墙,商品表中存儲(chǔ)了商品名稱、單價(jià)等商品信息经备,如果要同時(shí)查看訂單和商品信息拭抬,業(yè)務(wù)人員不知道數(shù)據(jù)結(jié)構(gòu),也很難做表間關(guān)聯(lián)侵蒙,所以就要技術(shù)人員將兩個(gè)表提前關(guān)聯(lián)好形成寬表造虎。
在olap技術(shù)發(fā)展過程中主要有MOLAP和ROLAP兩種形式,MOLAP中的數(shù)據(jù)文件通常叫做“CUBE”纷闺,這個(gè)名字大家都比較熟悉了算凿,一般是各個(gè)olap產(chǎn)品自己的數(shù)據(jù)文件格式。而隨著數(shù)據(jù)庫(kù)性能的提升犁功,ROLAP 產(chǎn)品逐漸流行起來(本文后續(xù)用到的產(chǎn)品潤(rùn)乾報(bào)表就是一個(gè)典型的 ROLAP 產(chǎn)品)氓轰,ROLAP 中數(shù)據(jù)保留在關(guān)系數(shù)據(jù)庫(kù)的事實(shí)表中,在使用用途上來說寬表約等于 CUBE浸卦。
通過寬表的使用署鸡,既能解決多維分析時(shí)多表的關(guān)聯(lián)問題又能提高數(shù)據(jù)查詢的速度和分析操作的便捷性。
2.3 寬表的生成
要基于上述業(yè)務(wù)表生成如下寬表,用來分析銷售數(shù)據(jù):
此時(shí)業(yè)務(wù)數(shù)據(jù)通常來自同一個(gè)數(shù)據(jù)庫(kù)靴庆,那么可以直接通過一個(gè) sql 語(yǔ)句生成:
CREATE TABLE oders_analyse AS (SELECT o.orderid,
o.amount,
o.discount,
p.proname,
p.price,
b.typename,
s.sipname,
s.linkname,
k.stockamount FROM
orders o
LEFT JOIN
product p ON o.proid = p.proid
LEFT JOIN
proctype b ON p.protype = b.typeid
LEFT JOIN
supplier s ON p.supid = s.supid
LEFT JOIN
stock k ON o.proid = k.proid)
如果是異構(gòu)數(shù)據(jù)庫(kù)时捌,那么還需要 ETL 工具進(jìn)行處理。