1. 程式人生 > >OLAP多維分析之Mondrian Schema詳解

OLAP多維分析之Mondrian Schema詳解

該文章看後感覺對與如何使用PSW工具定義Schema模型更為清楚,很受用是好東西。

Schema

Schema 定義了一個多維資料庫。包含了一個邏輯模型,而這個邏輯模型的目的是為了書寫 MDX 語言的查詢語句。

這個邏輯模型實際上提供了這幾個概念: Cubes (立方體)、維度( Dimensions )、度量 (Measure)、層次

( Hierarchies )、級別( Levels )、和成員( Members )。而一個 schema 檔案就是編輯這個 schema 的一個

xml 檔案。在這個檔案中形成邏輯模型和資料庫物理模型的對應。

Cube

一個 Cube 是一系列維度 (Dimension) 和度量 (Measure) 的集合區域。在 Cube 中, Dimension 和 Measure 的共

同地方就是共用一個事實表。 Cube 中的有以下幾個屬性:

屬性名

含義

name

Cube 的名字

caption

標題 , 在表示層顯示的

cache

是否對 Cube 對應的實表用 mondrian 進行儲存 , 預設為 true

enabled

是布林型的 , 如果是被啟用 ,Cubes 就執行 , 否則就不予理睬,預設為 true

Cube 裡面有一個全域性的標籤定義了所用的事實表的表名

Dimension

他是一個層次( Hierarchies )的集合 , 維度一般有其相對應的維度表 . 他的組成是由層次( Hierarchies )而層次

( Hierarchies )又是有級別( Level )組成 . 其屬性如下:

屬性名

含義

name

Dimension 的名稱

type

型別,有兩個可選的型別: StandarDimension 和 TimeDimension ,預設為 StandardDimension

caption

標題 , 在表示層顯示的

UsagePrefix

加字首 , 消除歧義

foreignKey

外來鍵,對應事實表中的一個列,它通過 <Hierarchy> 元素中的主鍵屬性連線起來。

Hierarchy

你一定要指定其中的各種關係 , 如果沒有指定 , 就預設 Hierarchy 裡面裝的是來自立方體中的真實表 . 屬性如下:

屬性名

含義

name

Hierarchy 的名稱,該值可以為空,為空時表示 Hirearchy 的名字和 Dimension 的名字相同。當一個 Dimension 有多個 Hierarchy 時,注意 name 值要唯一。

hasAll

布林型的 , 決定是否包含全部的成員 member

allMemberName

所有成員的名字 , 也就是總的標題 , 例如: allMemberName= “全部產品”

allLevelName

所有級別的名字,它會覆蓋其下所有的 Member 的 name 和所有的 Level 的 name 屬性的值。

allMemberCaption

例如 : allMemberCaption= “全部產品”這個是在表示層顯示的內容

PrimaryKey

通過主鍵來確定成員,該主鍵指的是成員表中的主鍵,該主鍵同時要與 Dimension 裡設定的 foreignKey 屬性對應的欄位形成外來鍵對應關係

primaryKeyTable

如果成員表不只一個,而是多個表通過 join 關係形成的,那麼就要通過這個屬性來指明 join 的這些表中,哪一個與 Dimension 裡設定的 foreignKey 屬性形成外來鍵關係。通過該屬性來指明主表

caption

標題 , 在表示層顯示的

defaultMember

memberReaderClass

設定一個成員讀取器,預設情況下 Hierarchy 都是從關係型資料庫裡讀取的,如果你的資料不在 RDBMS 裡面的話,你可以通過自定義一個 member reader 來表現一個 Hierarchy 。

Level

級別 , 他是組成 Hierarchy 的部分。屬性很多,並且是 schema 編寫的關鍵,使用它可以構成一個結構樹, Level

的先後順序決定了 Level 在這棵樹上的的位置,最頂層的 Level 位於樹的第一級,依次類推。 Level 的屬性如下:

屬性名

含義

name

名稱

table

該 Level 要使用的表名

column

用上面指定的表中某一列作為該 Level 的關鍵字

nameColumn

用來顯示的時候使用,如果不定義,那麼就採用上面的 column 的值來進行顯示。

oridinalColumn

定義該 Level 上的成員的顯示順序,如果不指定,那麼採用 column 的值。

parentColumn

在一個有父 - 子關係的 Hierarchy 當中,當前 Level 引用的是其父成員的列名。好比是一張部門表,在一張表裡表現部門的上下級關係,一個是主鍵,肯定還有一個欄位為連線到該主鍵的外來鍵的列名,這裡的 parentColumn 指的就是這個列名。

nullParentValue

如果當前的 Level 是有上下級關係(設定了 parentColumn 屬性),如果該 Level 又處於頂級,我們需要將頂級的資料取出來,這裡指的是位於頂級的父成員的值,有些資料庫不支援 null, 那麼也可以使用 ’0’ 或 ’-1’ 等,這就表示頂級的成員的父 ID 為 ’0’ 或為 ’-1’ 。

type

資料型別,預設值為 string 。當然還可以是 Numeric 、 Integer 、 Boolean 、 Date 等。

uniqueMembers

該屬性用於優化產生的 SQL ,如果你知道這個級別和其父級別交叉後的值或者是維度表中給定的級別所有的值是唯一的,那麼就可以設定該值為 true ,否則為 false 。

levelType

該 Level 的型別,預設為 regular (正常的),如果你在其 Dimension 屬性 type 裡選擇了 TimeDimension 那麼這裡就可以選擇 TimeYears 、 TimeQuarters 、 TimeMonth 、 TimeWeeds 、 TimeDays 。

hideMemberIf

在什麼時候不隱藏該成員,可選的值有三個: Never 、 IfBlankName 、 IfParentName

approxRowCount

該屬性可以用來提高效能,可以通過指定一個數值以減少判斷級別、層次、維度基數的時間,該屬性在通過使用 XMLA 連線 Mondrian 很有用處。

caption

標題 , 在表示層顯示的

captionColumn

用來顯示標題的列

formatter

該屬性定義了 Member.getCaption() 方法返回的動作值,這裡需要是一個實現了 mondrian.olap.MemberFormatter 介面的類,用來對 Caption 地值進行格式化。

Join

對於一個 Hierarchy 來說,有兩種方式為其指定:一種是直接通過一個 Table 標籤指定;一種是通過 Join 將

若干張表連線起來指定。一旦採用 Join 的話,那麼就要在 Hierarchy 裡的 primaryKeyTable 屬性指定主表。

Measure

Measure 就是我們要計算的數值,操作的核心。它的屬性如下:

屬性名

含義

name

名稱

aggregator

要採用的計算函式

column

要計算的列名

formatString

計算結果的顯示格式。

visible

是否可見

datatype

資料型別,預設為 Numeric

formatter

採用類來對該 Measure 的值進行格式,具體參考 Level 的 formatter 屬性。

caption

標題,用來顯示時使用。

相關推薦

OLAP分析Mondrian Schema

該文章看後感覺對與如何使用PSW工具定義Schema模型更為清楚,很受用是好東西。 Schema Schema 定義了一個多維資料庫。包含了一個邏輯模型,而這個邏輯模型的目的是為了書寫 MDX 語言的查詢語句。 這個邏輯模型實際上提供了這幾個概念: Cubes (立方體)

開源BI報表及OLAP分析平臺OPENI(二)—搭建Eclipse下的Openi開發環境

接著上節的demo來看如何在Eclipse下搭建Openi的開發及除錯環境. 一.下載openi-1.3.0-RELEASE-src 二.新建web project 在MyEclipse下新建web project:openi 1.openi-1.3.0-RELE

自動化Saltstack使用

自動化運維 saltstack 概要saltstack是基於Python開發的C/S架構的一款批量管理工具,底層采用動態的連接總線(ZeroMQ消息隊列pub/sub方式通信),使用ssl證書簽發的方式進行認證管理,使其可以用於編配, 遠程執行, 配置管理等等。部署輕松,在幾分鐘內可運行起來,擴展性好

Android 線程IntentService 完全

required xmlns 抽象 bitmap 圖片 on() 使用 ecif ati 關聯文章: Android 多線程之HandlerThread 完全詳解 Android 多線程之IntentService 完全詳解 android多線程-AsyncTask之

執行緒Future使用

什麼是Future Future是一個未來物件,裡面儲存這執行緒處理結果,它像一個提貨憑證,拿著它你可以隨時去提取結果 什麼時候使用 在兩種情況下,離開Future幾乎很難辦。 一種情況是拆分訂單,比如你的應用收到一個批量訂單,此時如果要求最快的處理訂單,那麼需要併發

Android 執行緒HandlerThread 完全

  之前對執行緒也寫過幾篇文章,不過倒是沒有針對android,因為java與android線上程方面大部分還是相同,不過本篇我們要介紹的是android的專屬類HandlerThread,因為HandlerThread在設定思想上還是挺值得我們學習的,那麼我們下面來

執行緒重排序

重排序 重排序是指編譯器和處理器為了優化程式效能而對指令序列進行重新排序的一種手段。 資料依賴性 如果兩個操作訪問同一個變數,且這兩個操作中有一個為寫操作,此時這兩個操作之間就存在資料的依賴性。資料依賴分為3中型別,如下表所示: 上面3中情況,只要重排序兩個操作的順序。程式的結

linux逆向分析ELF檔案

前言 首先如果大家遇到ELF二進位制檔案的逆向首先考慮的可能就是通過IDA進行靜態逆向分析演算法,那麼我們首先就要了解ELF(Executable and Linking Format)的檔案格式。 ELF檔案格式主要分為以下幾類: 1. 可重定位檔案(Relocatable File),這類檔

MyBatis原始碼分析@ResultMap註解

MyBatis原始碼分析之@ResultMap註解詳解 在前一篇文章講**@MapKey註解時,我原想將@ResultMap註解也一起拿出來說一下,但是發現@ResultMap解析載入原始碼非常多,想想就不在一篇文章中講了,分開單獨來說,這一篇就來徹底探索一下@ResultMap**

執行緒 Final變數

原文: http://www.tuicool.com/articles/2Yjmqy 併發程式設計網:http://ifeve.com/java-memory-model/ 總結: Final 變數在併發當中,原理是通過禁止cpu的指令集重排序(重排序詳解http://ifeve.com/java

Java 執行緒synchronized關鍵字

package com.example; /** * Created by 晁東洋 on 2017/5/27. */ public class MyThreadClass { public static void main(String args[]){ Exampletest

分析OLAP引擎Mondrian學習

1 背景 1.1 實時業務監控背景 隨著資訊科技的飛速發展,在電力、電信、金融、大型製造等各個行業ERP、CRM、SCM、OA等越來越多的IT系統得以成功實施,這些分散建設的IT系統為各部門的運營效率提升發揮了很大的作用。同時,為了滿足業務管理和決策的報表系統(包

在Java Web專案中引入Mondrian分析框架

本文完全轉載自:http://www.linuxidc.com/Linux/2014-09/107008.htm 我也是初學,為了方便以後檢視,所以轉到自己部落格上了。 -------------------------------------------------------------

使用Saiku+Kylin構建分析OLAP平臺

http://lxw1234.com/archives/2016/05/647.htm 關於Kylin的介紹和使用請參考之前的文章 《分散式大資料多維分析(OLAP)引擎Apache Kylin安裝配置及使用示例》 Kylin對外提供的是SQL查詢介面,基於Kylin構

分散式大資料分析OLAP)引擎Apache Kylin安裝配置及使用示例

Apache Kylin是一個開源的分散式分析引擎,提供Hadoop之上的SQL查詢介面及多維分析(OLAP)能力以支援超大規模資料,最初由eBay 開發並貢獻至開源社群。它能在亞秒內查詢巨大的Hive表。 Kylin OLAP引擎基礎框架,包括元資料(Metada

大數據量分析項目Kylin調研二期

not creat aps trac 找到 概念 cati lee shell命令 一、 cube構建步驟 登錄頁面 創建Project      同步數據      1) 加載Hive表 2) 從同步的目錄中導入,即將上張圖中左側

給一句 SQL 就能做分析

就是 nbsp 分析 學習 127.0.0.1 多維 返回 應用程序 web 應用 上一篇我們以 Excel 文件數據集為例,介紹了如何把 Excel 的數據透視表嵌入到俺的應用程序中。愛學習的同學會問了,Excel 數據透視表可以使用 Excel 裏取到的任何數據,比如數

巧用模板變換分析表格樣式

自定義表格樣式 多維分析展現報表時,潤乾報表提供了一套預設的表格樣式,統一的表格樣式可以使業務人員減少報表美化的工作量。然而預設的樣式不可能迎合所有使用者的審美,為此潤乾提供了自定義表格樣式的功能,供使用者實現個性化的需求,下面小編就來教你如何改變預設表格的樣式。 先來看下預設的表格樣式,下

如何使用自定義模板實現個性化分析

自定義表格樣式 多維分析展現報表時,潤乾報表提供了一套預設的表格樣式,統一的表格樣式可以使業務人員減少報表美化的工作量。然而預設的樣式不可能迎合所有使用者的審美,為此潤乾提供了自定義表格樣式的功能,供使用者實現個性化的需求,下面小編就來教你如何改變預設表格的樣式。 先來看下預設的表格樣式,下

如何使用Java資料集進行web端的分析操作

看到文章標題,顧名思義應該也曉得本篇文章的重點內容是要說啥了吧?   沒錯,就是想針對程式資料集上的多維分析嘮幾毛錢的!所謂程式資料集,是指資料來源不是來自檔案和SQL,而是由程式現計算出來的。這種情況在許多BI系統中都會出現,BI系統自己管理資料模型,把資料庫擋在後面,不會直接開