日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

saiku、mondrian前奏之——立方体、维度、Schema的基本概念

發(fā)布時(shí)間:2025/3/17 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 saiku、mondrian前奏之——立方体、维度、Schema的基本概念 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

以前介紹了幾個(gè)基本工具:saiku 和 Schema Workbench,算是入門級(jí)別的了解多維報(bào)表,如果要繼續(xù)深入,需要深入了解如下幾個(gè)概念:

1、OLAP

聯(lián)機(jī)分析處理,和他對(duì)應(yīng)的是OLTP(聯(lián)機(jī)事務(wù)處理)。

OLTP:做為一個(gè)開發(fā)人員,OLTP是最常用的,甚至都不需要理解這個(gè)概念!比如各種門票銷售系統(tǒng)、付款系統(tǒng)等等。這些系統(tǒng)對(duì)相應(yīng)速度要求特別高

OLAP:主要用于分析和決策,是數(shù)據(jù)倉(cāng)庫(kù)的主要應(yīng)用。比如:渠道A在2015-10-01給產(chǎn)品B帶來多少pv、uv、訂單、銷售額等數(shù)據(jù),這就對(duì)分析的能力提出了很高的要求。開發(fā)人員開到這里可能會(huì)想,這是一個(gè)Sql能解決的,有必要搞出一個(gè)概念嗎?我理解是有兩個(gè)原因,首先需求非常非常多,不可能每一個(gè)都寫Sql,會(huì)累死的;其次從業(yè)務(wù)數(shù)據(jù)表里面寫這個(gè)Sql,往往非常復(fù)雜,如果數(shù)據(jù)量很大,運(yùn)行時(shí)間也會(huì)很長(zhǎng)。

下面是OLAP和OLTP的主要區(qū)別:

? OLTP OLAP
用戶 操作人員,低層管理人員 決策人員,高級(jí)管理人員
功能 日常操作處理 分析決策
DB設(shè)計(jì) 面向應(yīng)用 面向主題
數(shù)據(jù) 當(dāng)前的,最新的細(xì)節(jié)的,二維的分立的 歷吏的,聚集的,多維的,集成的,統(tǒng)一的
存取 /寫數(shù)十條記錄 讀上百萬條記錄
工作單位 簡(jiǎn)單的事務(wù) 復(fù)雜的查詢
DB大小 100MB-GB 100GB-TB

2、Mondrian

與其說Mondrian是OLAP的分析引擎,不如說就是(按照分析數(shù)據(jù)模式的XML)執(zhí)行MDX語句,并輸出結(jié)果。

為什么需要OLAP引擎Mondrian?在工作中經(jīng)常需要對(duì)數(shù)據(jù)量極大的數(shù)據(jù)表和相關(guān)聯(lián)的多個(gè)維度表進(jìn)行查詢、匯總、軸變換以及上卷、下鉆等操作,查詢可以非常復(fù)雜,如果沒有 OLAP 引擎這是很難完成的。 想象一下,某個(gè)省份的uv是多少?某個(gè)省份某天的uv是多少?某個(gè)渠道給某個(gè)省份某天的uv是多少?某個(gè)渠道給某個(gè)省份某個(gè)城市某天的uv是多少?......要多少Sql

那么Mondrian可以將需求翻譯成sql,并執(zhí)行。要求:MDX語言,翻譯規(guī)則:模式文件里面邏輯模型到物理模型的映射!

3、數(shù)據(jù)庫(kù)表

其實(shí)這不算是新的概念,這里主要是說明一下數(shù)據(jù)庫(kù)表和Mondian之間的關(guān)系。Mondrian使用JDBC鏈接數(shù)據(jù)庫(kù),并運(yùn)行在數(shù)據(jù)庫(kù)基礎(chǔ)上。數(shù)據(jù)表分為:事實(shí)表和維度表,這些概念可以參考:http://www.cnblogs.com/liqiu/p/4243437.html

4、立方體

這是核心概念,事實(shí)表和維度表共同構(gòu)成了立方體。如圖所示:

這個(gè)立方體有三個(gè)維度時(shí)間(Time)、貨運(yùn)方式(Route)、地區(qū)(Source),數(shù)據(jù)(度量) 就位于各軸的交叉點(diǎn)(Cell)。

如果關(guān)心不同的維度和層次,就會(huì)得到不同的數(shù)據(jù)粒度,在立方體中就是一個(gè)面,或者一個(gè)柱形,或一個(gè)小立方體。這也叫數(shù)據(jù)立方體的一個(gè)切片(Slicer)。

關(guān)心維度越少,層次越高,數(shù)據(jù)量就越少,這是一個(gè)聚集(Aggregate)的過程,會(huì)對(duì)度量進(jìn)行聚集操作(一般是匯總)。?

5、維度

維度(Dimension)表示數(shù)據(jù)的屬性,一個(gè)維度一般會(huì)有一個(gè)維表(也可能多個(gè)),事實(shí)表會(huì)有一個(gè)字段關(guān)聯(lián)維表。

比如某個(gè)銷售數(shù)據(jù)里可能會(huì)有客戶這個(gè)維度,有一個(gè) customers 表:包含客戶名字、性別、地區(qū)等屬性,在事實(shí)表會(huì)有一個(gè)字段叫 customer_id,關(guān)聯(lián) customers 表。

有的維度可以沒有維度表,因?yàn)檫@種維度比較簡(jiǎn)單,沒有更多屬性,沒有必要加一個(gè)維度表。這種維度叫退化維度。比如事實(shí)表里有一個(gè)支付方式字段,只有已確定的有限幾種取值:比如 cash(現(xiàn)金)、credit(信用卡)等。又比如事實(shí)表里已有了一個(gè)性別字段,那性別這個(gè)維度就不需要一個(gè)維表。

5.1 維度的層次

維度是可以有層次的。比如前面的數(shù)據(jù)立方體,三個(gè)維度都有層次。貨運(yùn)方式分陸地和非陸地,陸地分公路和鐵路、非陸地分海路和航空。分層次的維度提供了更多的數(shù)據(jù)粒度選擇。

維度的層次(Hierarchy)包含多層/級(jí)(Level),在維表中一般每層會(huì)有一個(gè)字段,事實(shí)表關(guān)聯(lián)的是最低一級(jí)維度。比如 Time 維度表,如下:

CREATE TABLE "Time" (stattime date, -- 日期week integer, --month integer, --quarter integer, -- 季度year integer -- )

事實(shí)表關(guān)聯(lián)的是維表的日期(yyyy-MM-dd)字段,而維表還有月、季度、年字段。有些事實(shí)表會(huì)增加月、季度、年(冗余)字段,為了 在查詢時(shí)減少關(guān)聯(lián)維表。

5.2 維度的成員

維度的成員(Member)指的維表某個(gè)級(jí)別(Level)的一個(gè)取值。以時(shí)間維度為例,假設(shè)時(shí)間維度分為年份、季度、月份、日期這樣的級(jí)別,時(shí)間跨度是 2003 年至 2005 年(假設(shè)每一天都要數(shù)據(jù)),那么日期這一級(jí)別(最低的級(jí)別)的成員(Members)是維度表所有的日期(2003-1-1,2003-1-2...2005-12-31)(1 千多個(gè)成員),月份這一級(jí)別的成員是 1-12(12 個(gè)),季度的成員是 1-4(4 個(gè)),年份的成員是2003-2005(3 個(gè))

6、聚集表

聚集表:是為了提升效率事先對(duì)事實(shí)表進(jìn)行輕度的匯總。相當(dāng)于預(yù)處理,不用每次都計(jì)算

7、Schema

多維數(shù)據(jù)的事實(shí)表、維表、聚集表等存儲(chǔ)于數(shù)據(jù)庫(kù)中,屬于物理模型;而數(shù)據(jù)立方體、維度、度量這些概念屬于邏輯模型。多維分析引擎必須要理解邏輯模型,并能夠映射到物理模型上。多維數(shù)據(jù)的模式(Schema)就是用來描述這個(gè)邏輯模型以及到物理模型的映射的。 模式(Schema)是多維數(shù)據(jù)庫(kù)的元數(shù)據(jù)。

比如咱們?cè)谑褂胹aiku的時(shí)候,上傳的shema文件。或者使用mondrian workpench的時(shí)候,自動(dòng)生成的xml文件都是這個(gè)內(nèi)容,下面是一個(gè)例子:

<Schema name="qiu-schema"><Cube name="qiu-cube" visible="true" cache="true" enabled="true"><Table name="sale" schema="public" alias=""></Table><Dimension type="StandardDimension" visible="true" foreignKey="cusid" name="qiuDimension"><Hierarchy name="qiuHierarchy" visible="true" hasAll="true" allMemberName="allCustomer" allMemberCaption="&#25152;&#26377;&#21517;&#31216;"><Table name="customer" schema="public" alias=""></Table><Level name="qiuLevel" visible="true" column="gender" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never"></Level></Hierarchy></Dimension><Measure name="qiuMeasure" column="num" datatype="Numeric" aggregator="sum" visible="true"></Measure></Cube> </Schema>

?

參考:

http://76287.blog.51cto.com/66287/885475

http://www.cnblogs.com/liqiu/p/4243437.html

?

總結(jié)

以上是生活随笔為你收集整理的saiku、mondrian前奏之——立方体、维度、Schema的基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。