BIEE建模参考规范
注:本文基于網(wǎng)上盛傳的“BIEE建模黃金法則”,并做了更為細(xì)致的講解,以及修改。
物理層
1、??在可能的情況下,配置你的連接池使用本地驅(qū)動(dòng)來連接物理數(shù)據(jù)庫。例如,使用OCI而不是ODBC來連接Oracle數(shù)據(jù)庫
2、??當(dāng)數(shù)據(jù)模型是星型時(shí),為物理表建別名(以Dim_,Fact_作為前綴),并根據(jù)需要添加描述性后綴。
例如:在數(shù)據(jù)倉庫中,我們有一張W_STATUS_D字典表用于存儲(chǔ)各種事務(wù)狀態(tài)(活動(dòng)狀態(tài)、合同狀態(tài)、客戶狀態(tài)),那我們應(yīng)該為不同的狀態(tài)類別創(chuàng)建相應(yīng)的別名表,如:
Dim_W_STATUS_D_Activity_Status
Dim_W_STATUS_D_Contact_Status
Dim_W_STATUS_D_Customer_Status
?
描述名稱部分應(yīng)該按每個(gè)單詞首字母大寫的方式(如果是英文名稱)
?
Tips:為什么要這樣做?這樣看起來更為復(fù)雜,但是實(shí)際上會(huì)使邏輯更為清晰,通過在邏輯層對不同的表添加不同的過濾條件,使得最終每張邏輯表只包含所對應(yīng)的狀態(tài)值,那我們在Answer中使用的時(shí)候就不必進(jìn)行過濾了。
?
另外,通過建立別名,我們可以避免在物理層出現(xiàn)環(huán)狀連接關(guān)系;更為重要的是,我們可以通過建立別名來實(shí)現(xiàn)角色扮演維!
?
3、??盡量避免視圖的使用,視圖有可能會(huì)帶來性能問題。(除非你非常熟悉視圖合并的原理)
4、??為初始化塊建立單獨(dú)的連接池,而不要使用第一個(gè)連接池(從上到下)。因?yàn)椴樵兪褂玫氖堑谝粋€(gè)連接池,當(dāng)已有查詢用盡了連接池的所有連接時(shí),如果此時(shí)新用戶登錄需要初始化會(huì)話變量,就會(huì)因?yàn)闆]有可用的連接而等待,進(jìn)而造成用戶登錄緩慢。(這也是為什么BIEE 11g默認(rèn)情況下不能將第一個(gè)連接池用于初始化塊的原因,這不是最佳實(shí)踐!)
?
邏輯層
1、命名規(guī)范
方案一:所有的邏輯表都應(yīng)該以Dim -,Fact –開頭,中間跟業(yè)務(wù)主題或者模塊名(可選),最后是表名,例如:
Fact - CRM – Revenue
Fact - HR – Payroll
Dim – Agreement
?
方案二:所有的邏輯表以F+編號(hào),D+編號(hào)為前綴,然后空一格跟表描述;另外維度以H+編號(hào)為前綴,然后空一格跟維度描述;例如:
F0 Sales Base Measures
D0 Time
H1 Products
此種方案主要是為了控制表的排列順序
?
另外,所有的描述名稱部分應(yīng)該按每個(gè)單詞首字母大寫加空格分隔的方式(如果是英文名稱)
?
2、所有的物理層的列名稱都不應(yīng)該出現(xiàn)在邏輯層。邏輯的命名必須是“面向業(yè)務(wù)”的。例如使用Revenue而不是DOLLARS,同樣應(yīng)該遵循每個(gè)單詞首字母大寫加空格分隔的方式
下面給出一些常見的命名方式:
關(guān)于數(shù)量的:?# of Assets (一般其聚合規(guī)則為count或者?count distinct的)
百分比的:?% Contacted
時(shí)間序列的:Quarter Ago Average Order Size
另外,同一張事實(shí)表中的指標(biāo)應(yīng)該按類別進(jìn)行排列,并添加分隔符(添加邏輯字段,修改其名稱),如下圖所示:
?
還可以通過設(shè)置不同的圖標(biāo)來標(biāo)識(shí)不同類別指標(biāo),如下圖所示:
計(jì)算器圖標(biāo)的是派生指標(biāo)、其它的是普通指標(biāo)。
?
3、物理主鍵和代理鍵不應(yīng)該出現(xiàn)在業(yè)務(wù)模型層。
4、維度邏輯表必須要指定邏輯鍵。這個(gè)邏輯健應(yīng)該是面向業(yè)務(wù)的,比如應(yīng)該是“Employee Login”而不是“EMPLOYEE_PK”。
5、維度邏輯表必須僅僅包含維度屬性,他們永遠(yuǎn)不應(yīng)該包含任何度量列(有聚合規(guī)則)
Tips:如果需要在維度上做計(jì)算,如“天數(shù)”,則應(yīng)將該維表為LTS建立事實(shí)表,比較常見的就是“時(shí)間事實(shí)表”
5、??事實(shí)邏輯表不應(yīng)該指定邏輯鍵。
6、??在事實(shí)邏輯表中,每一列都是度量列,同時(shí)要指定聚合規(guī)則。
Tips:對應(yīng)事實(shí)表上的屬性字段,比如退化維,則應(yīng)該以該事實(shí)表為LTS建立相應(yīng)的邏輯維表
7、業(yè)務(wù)模型應(yīng)該僅包含邏輯星型,不應(yīng)該是雪花型。
注意:這里說的是邏輯星型,物理上有可能是雪花型。通過設(shè)置多LTS我們總能把雪花轉(zhuǎn)換為邏輯星型
7、??每一個(gè)維度邏輯表都應(yīng)該有對應(yīng)的維度層次。
8、??每一個(gè)維度層級(jí)都設(shè)置適當(dāng)?shù)脑貍€(gè)數(shù)。一般要指定子層級(jí)的要比父層級(jí)的元素個(gè)數(shù)多。
注意:元素個(gè)數(shù)不需要精確,只要比例合適即可。另外可以使用“估計(jì)級(jí)別”功能自動(dòng)來填寫該值。
9、不要將所有度量合并到單獨(dú)的一個(gè)事實(shí)邏輯表。例如,你應(yīng)該將“Forecast Sales”和“Actual Sales”度量放到兩個(gè)邏輯表中---“Fact_Sales”和“Fact_Forecast”
?
?
展現(xiàn)層
1、??主題應(yīng)該按照業(yè)務(wù)進(jìn)行劃分,比如銷售、采購、庫存
2、??當(dāng)你有多個(gè)主題區(qū)域時(shí),在每個(gè)主題區(qū)域以相同的順序列出這些公用的維度
3、??展示層的表的名字不要以Dim或Fact開頭了。如果主題區(qū)域中的表是直接從邏輯層拖過來的話,要移除該前綴。
4、??時(shí)間維度表列在每一個(gè)主題區(qū)域的第一個(gè)位置。包含事實(shí)的展現(xiàn)層表應(yīng)該列在底部,同時(shí)展現(xiàn)表應(yīng)該被稱作Facts,并可以根據(jù)需要?jiǎng)澐殖刹煌悇e的事實(shí),如Base Facts、Calculated Facts,然后做成層結(jié)構(gòu)。如下圖所示:
?
?
?
4、絕不應(yīng)該出現(xiàn)用戶從主題區(qū)域中選取的對象沒有邏輯關(guān)聯(lián)。如果有任何從同一主題區(qū)域中選擇的對象無法共存,那么一定是你的主題區(qū)域設(shè)計(jì)不正確。
轉(zhuǎn)載于:https://www.cnblogs.com/tdskee/p/6093354.html
總結(jié)
以上是生活随笔為你收集整理的BIEE建模参考规范的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [设计模式]8. C++与中介者模式(m
- 下一篇: flex属性值----弹性盒子布局