《mondrian的基本模式.ppt》由会员分享,可在线阅读,更多相关《mondrian的基本模式.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Mondrian模式,1.什么是mondrian模式?,一个mondriann模式文件定义了一个多维数据库. 它包含一个逻辑模型(logical model)、一组数据立方(consisting of cubes)、层次(hierarchies)、和成员(members), 并映射到物理模型上.,逻辑模型(logical model)是为了编写MDX查询语言而创建的,有如下概念: 数据立方(cubes); 维(dimensions); 层次(hierarchies); 级别(levels); 成员(members).,物理模型是所有数据的源,它们通过逻辑模型表现出来。典型的是星型模式,它们是由
2、关系型数据库中的一组表组成。下面我们还将看到一些其他映射的例子,2.模式文件,Mondrian 模式是定义在一个XML文件中的.demo/FoodMart.xml这个文件里包含大多数我们这里讨论的结构 目前, 生成模式文件的方法是使用XML编辑器手动编写,XML语法并不复杂,因此这个任务并不像听上去那么难 注意: XML元素必须按照一定的先后顺序出现.,3.逻辑模型,模式的重要组成部分为:数据立方(cubes), 度量(measures), 和维(dimensions): 数据立方 :维和度量在一个特定主题范围内的集合. 度量 :一个你感兴趣的一个测量值,例如, 某种产品的销量. 维:一个属性
3、, 属性的集合, 用于度量的分类. 例如, 你希望通过产品的颜色、客户的性别来区分它们的销量。在这里,颜色和性别被称之为维,一个简单模式的例子, ,该模式包含一个名为“sales”的简单数据立方(cube), 它有两个维(dimension):Time, 和 Gender, 和两个度量: Unit Sales 和 Store Sales.,我们可以根据以上模式来书写一个如下的MDX查询语言: SELECT Measures.Unit Sales, Measures.Store Sales ON COLUMNS, descendants(Time.1997.Q1) ON ROWSFROM Sal
4、esWHERE Gender.F,这个查询引用了这个数据立方(Sales),结果如下: 下面我们将详细的说明:,3.1数据立方(cube),一个数据立方是一些度量的维的集合. 通常定义在一个事实表中, 如我们在事实表 sales_fact_1997中看到的, 它保存了度量值和对维表的引用. .,3.2度量(measures),这个销售数据立方定义了两个度量:Unit Sales and Store Sales., ,每个度量包含一个名字对应事实表中的一个列、采用一个聚合函数. 聚合函数通常为 “sum”, 但 “count”, “min”, “max”, “avg”, 和 “distinct-
5、count” 也是经常使用的。 上面的度量”Unit Sales”对应事实表 “sales_fact_1997”中一个名为”unit_sales”的列,使用”sum”函数聚合。,可选属性 datatype 指定了单元值在 Mondrians缓存中的格式, 和它们经XML返回的格式. 属性 datatype 可以是 String, Integer, Numeric, Boolean, Date, Time, and Timestamp中的一个. 默认为 Numeric,一个可选的formatString属性指定了值如何被打印。这里我们选择销售数量不带小数的输出(因为销售数量是整数) ,销售总额带
6、2位小数 . 符号, 和 . 是对地区敏感的, 因此如果是在意大利运行, 销售总额可能会出现 48.123,45.,度量值不仅可以从事实表中的列中得出,它还可以使用 cell reader, 或一个 SQL 表达式来计算它的值. 以下度量 Promotion Sales使用了SQL表达式来计算其值. 注意:底层数据库必须支持 SQL 表达式., (case when sales_fact_1997.promotion_id = 0 then 0 else sales_fact_1997.store_sales end) ,3.3 维, 层次, 级别(Dimensions, Hierarchie
7、s, Levels),成员(member),一个成员(member)是指维上的一个点,是该维值集合中的一个值. 如名为gender的层次结构有两个member:M and F.名为store 的层级结构有三个成员San Francisco, California 和 USA .,层次结构(hierarchy),层次结构(hierarchy)是为了方便分析问题而将一组member组织成的结构. 例如,store层次结构由store name, city, state, 和nation组成。,级别(level),一个level是members的集合,它们到根层次(hierarchy)的距离(dis
8、tance)是相同的,维(dimension),一个维(dimension)是一个层次(hierarchy)的集合,根据事实表中的列来区别,维定义的例子,让我们看如下一个维定义 该维由一个单一的层次(hierarchy)组成, 而这个层次则由一个名为Gender的级别(level)组成 ., ,该维的值是从表customer中的gender列提取出来的. 列 “gender” 有两个值: F and M, 因此Gender 维包含两个成员: Gender.F 和 Gender.M。,3.3.1 维和层次到表的映射,一个维依靠一对列和数据立方进行连接, 一个在事件表中, 另一个在维表中。 元素有
9、一个外键(foreignKey)属性,对应事实表中的一个列,它通过 元素中的主键属性连接起来.,3.3.2 all 成员,默认情况下, 每个层次都包含一个称之为 (All)的顶级别, 它包含一话个名为 (All hierarchyName)的成员(member). 该成员是该维中所有其他成员的父成员,它也是该层次的默认成员,3.3.3 时间维(Time dimension),时间维有一个“TimeDimension”类型.时间维中级别(level)的类型由 levelType属性指定, 有如下可选值: TimeYears TimeQuarters TimeMonths TimeDays,下面是
10、一个关于时间维的例子:, ,3.3.4 计算成员(Calculated members),假设你想要创建一个度量,但事实表中并没有这个列,一种方法是使用WITH MEMBER子句,如下: WITH MEMBER Measures.Profit AS Measures.Store Sales-Measures.Store Cost, FORMAT_STRING = $#,# SELECT Measures.Store Sales, Measures.Profit ON COLUMNS, Product.Children ON ROWS FROM Sales WHERE Time.1997,但更好的办法是在模式中定义这个成员,下面在是cube中的定义, ,在这里,我们对mondrian模式的基本内容进行了简单介绍。 您可以通过访问 或阅读doc_cnarchitecture_cn.html,