OLAP操作(數(shù)據(jù)庫(kù))
時(shí)間:2022-11-05 08:30:01 | 來(lái)源:信息時(shí)代
時(shí)間:2022-11-05 08:30:01 來(lái)源:信息時(shí)代
OLAP操作 : 通過(guò)對(duì)多維形式組織起來(lái)的數(shù)據(jù)進(jìn)行切片、切塊、聚合、鉆取、旋轉(zhuǎn)等分析動(dòng)作,以求剖析數(shù)據(jù)使用戶能夠從多種維度、多個(gè)側(cè)面、多種數(shù)據(jù)綜合度查看數(shù)據(jù),從而深入地了解包含在數(shù)據(jù)中的信息、內(nèi)涵。OLAP的操作方式迎合了人們的思維模式,為用戶從不同角度觀察數(shù)據(jù)提供了靈活性。
1. 數(shù)據(jù)切片(slice)
數(shù)據(jù)切片有兩個(gè)定義:
數(shù)據(jù)切片1:數(shù)組的某一維上選定一個(gè)取值,則多維數(shù)組就從n維降成了n-1維,稱(chēng)多維數(shù)組的子集(維度1,維度2,…,維成員Vi,…,維度n,變量)(設(shè)維度i的維成員取Vi)為多維數(shù)組在維度i上的切片。
如圖1所示是一個(gè)按產(chǎn)品維、城市維和時(shí)間維(年)組織起來(lái)的產(chǎn)品銷(xiāo)售數(shù)據(jù),用多維數(shù)組表示為(時(shí)間,城市,產(chǎn)品,銷(xiāo)售額)。如果在城市維上選定一個(gè)維成員(設(shè)為“上?!被颉皬V州”),就得到了在城市維上的一個(gè)切片; 如果在產(chǎn)品維上選定一個(gè)維成員(設(shè)為“電視機(jī)”或“電冰箱”),就得到了在產(chǎn)品維上的一個(gè)切片。顯然,這樣切片的數(shù)目取決于每個(gè)維成員的個(gè)數(shù)。
圖1 數(shù)據(jù)切片示意圖
一次切片一定使原來(lái)維數(shù)減1,因此所得的切片結(jié)果并不一定是二維的“平面”,其切片結(jié)果的維數(shù)取決于原來(lái)的多維數(shù)組的維數(shù)。這樣的切片含義不夠通俗易懂,所以給出了切片的另一個(gè)定義(這兩個(gè)定義是不等價(jià)的): 數(shù)據(jù)切片2: 選定多維數(shù)組中兩個(gè)維: 維i和維j,在這兩個(gè)維上取某一區(qū)間或任意的維成員,而將其余的維都分別取定一個(gè)維成員的動(dòng)作稱(chēng)為多維數(shù)組在維i和維j上的一個(gè)切片,表示為:(維i,維j,變量)。
對(duì)于圖1的例子,選定多維數(shù)組(時(shí)間,城市,產(chǎn)品,銷(xiāo)售額)中的時(shí)間維度與產(chǎn)品維度,而在城市維上取定一個(gè)維成員(設(shè)為“上?!被颉皬V州”),就得到了多維數(shù)組(時(shí)間,城市,產(chǎn)品,銷(xiāo)售額)在時(shí)間和產(chǎn)品兩維上的一個(gè)切片(時(shí)間,產(chǎn)品,銷(xiāo)售額)。它表示“上?!被颉皬V州”地區(qū)各產(chǎn)品、每年的銷(xiāo)售情況。相應(yīng)地,選定時(shí)間維度與城市維度,而在產(chǎn)品維上取定一個(gè)維成員(設(shè)為“電視機(jī)”或“電冰箱”),就得到了多維數(shù)組(時(shí)間,城市,產(chǎn)品,銷(xiāo)售額)在時(shí)間和城市兩維上的一個(gè)切片(時(shí)間,城市,銷(xiāo)售額)。
從第二個(gè)定義可以得出以下兩點(diǎn):
(1)一個(gè)多維數(shù)組的切片最終是由該數(shù)組中除切片所在平面的兩個(gè)維之外的其他維的成員值確定的。
(2)維是觀察數(shù)據(jù)的角度,那么切片的作用或結(jié)果就是舍棄一些觀察角度,使人們能在兩個(gè)維上集中觀察數(shù)據(jù)。因?yàn)槿说目臻g想像能力畢竟有限,一般很難想像四維以上的空間結(jié)構(gòu)。所以對(duì)于維數(shù)較多的多維數(shù)據(jù)空間,數(shù)據(jù)切片是很有意義的。
第二個(gè)定義可以看成是第一個(gè)定義的一個(gè)特例。對(duì)于一個(gè)n維數(shù)組,按第一個(gè)定義進(jìn)行的n-2次切片的結(jié)果,就必定是對(duì)應(yīng)于按第二個(gè)定義進(jìn)行的某一次切片的結(jié)果。
2. 數(shù)據(jù)切塊(dice)
和切片相對(duì)應(yīng),對(duì)切塊也有兩個(gè)定義:
數(shù)據(jù)切塊1:將多維數(shù)組某一維上的取值設(shè)定為一個(gè)區(qū)間(例如取“1999至2004年”)的維成員的動(dòng)作稱(chēng)為切塊。顯然,當(dāng)這一區(qū)間只取一維成員時(shí),即得到一個(gè)切片。
數(shù)據(jù)切塊2: 選定多維數(shù)組中三個(gè)維: 維i、維j和維k,在這三個(gè)維上取某一區(qū)間或任意的維成員,而將其余的維都分別取定一個(gè)維成員的動(dòng)作稱(chēng)為多維數(shù)組在維i、維j和維k上的一個(gè)切塊,表示為:(維i,維j,維k,變量)。
從另一個(gè)角度來(lái)講,切塊可以看成是由多個(gè)切片疊合而成。在圖1中,如果將城市維上的取值設(shè)定為一個(gè)區(qū)間,例如取(上海、北京、廣州),而非單一的維成員時(shí),就得到一個(gè)數(shù)據(jù)切塊,它可以看成是上海、北京和廣州三個(gè)切片疊合而成。
3.數(shù)據(jù)上鉆/下鉆(drill-up/drill-down)
上鉆操作通過(guò)一個(gè)維的概念分層向上攀升; 下鉆是上鉆的逆操作,可以通過(guò)沿維的概念分層向下。這兩者都是改變維的層次的操作。
在圖2中,2004年某產(chǎn)品銷(xiāo)售收入如表1,時(shí)間層次是“年”,如在時(shí)間維上進(jìn)行下鉆操作,可獲得其下層各季度銷(xiāo)售數(shù)據(jù)如表2所示,表2顯示的是2004年某產(chǎn)品每季度的銷(xiāo)售情況,顯然,表2中各個(gè)季度的銷(xiāo)售總和應(yīng)當(dāng)?shù)扔诒?中一年的銷(xiāo)量。同理,如果在季度層次上繼續(xù)向下鉆取,則可得到2004年該產(chǎn)品每季度、每月的銷(xiāo)售情況,等等。相反,若進(jìn)行上鉆,則可從表2得到表1的結(jié)果。
圖2 上鉆、下鉆操作示意圖
顯然,鉆取的深度與維所劃分的層次相對(duì)應(yīng)。如果對(duì)時(shí)間維度上只定義了“年”、“季度”這兩個(gè)層次關(guān)系,那么表2是能夠得到的最細(xì)節(jié)的數(shù)據(jù),不能再進(jìn)一步下鉆。如果對(duì)時(shí)間維度定義了“年”、“季度”、“月份”、“周”、“日”等更多的層次,則還可以進(jìn)一步鉆取。類(lèi)似地,也可以在部門(mén)維度上進(jìn)行鉆取。
4. 數(shù)據(jù)旋轉(zhuǎn)(rotate)
數(shù)據(jù)旋轉(zhuǎn)是改變維度的位置關(guān)系,通過(guò)旋轉(zhuǎn)可以得到不同視角的數(shù)據(jù)。旋轉(zhuǎn)可能交換行和列,也可能是在維度層次之間進(jìn)行交換。
如圖3(a)所示是一個(gè)行列交換示意圖,橫向的時(shí)間維度和縱向的產(chǎn)品維度進(jìn)行了交換,從而形成橫向?yàn)楫a(chǎn)品,縱向?yàn)闀r(shí)間的表。圖3(b)所示是一個(gè)三維旋轉(zhuǎn)示例。圖3(c)所示則是在維度層次之間進(jìn)行了交換,這使得用戶能夠更好地對(duì)同產(chǎn)品不同地區(qū),不同季度的數(shù)據(jù)進(jìn)行比較。
圖3 旋轉(zhuǎn)操作示意圖