当前位置: 首页 > news >正文

Mondrian系列(三)-如何设计Mondrian的Schema(1)

1.什么是mondrian的Schema?

Schema定义了多维数据库。其中包含了逻辑模型,由Cube、层次、成员组成,而且定义了逻辑模型到物理模型的映射。

逻辑模型组成了用来进行MDX查询的结构,包括cube、维度dimension、层次hierarchies、等级level以及成员member。

物理模型是逻辑模型的数据源,典型的物理模型是星型模型,通过关系数据库中的一系列表构成;后面我们会看到一些其他种类映射的例子。

2.Schema文件

Mondrian的schema是以xml文件的方式表现的。在mondrian目录下的demo/FoodMart.xml文件就是一个最好的例子,其中包括了我们所要涉及的几乎全部结构。demo/FoodMartCreateData.sql文件是测试数据集,默认使用的是mysql,如果是Oracle下面,可以通过Access的mdb数据文件做移植,或者是通过导入的mysql数据进行移植,可以使用Oracle的SQL Developer工具做这件事。

现在,创建Schema文件的方法是通过文本编辑器来编写xml文件。xml的语法不太复杂,并不像想象的那样困难。一个XML文档的实例如下:

Schema>

Cube>

Table>

AggName>

aggElements

AggPattern>

aggElements

Dimension>

Hierarchy>

relation

Closure/>

Level>

KeyExpression>

SQL/>

NameExpression>

SQL/>

CaptionExpression>

SQL/>

OrdinalExpression>

SQL/>

ParentExpression>

SQL/>

Property>

PropertyExpression>

SQL/>

DimensionUsage>

Measure>

MeasureExpression>

SQL/>

CalculatedMemberProperty/>

CalculatedMember>

Formula/>

CalculatedMemberProperty/>

NamedSet>

Formula/>

VirtualCube>

CubeUsages>

CubeUsage>

VirtualCubeDimension>

VirtualCubeMeasure>

Role>

SchemaGrant>

CubeGrant>

HierarchyGrant>

MemberGrant/>

Union>

RoleUsage/>

UserDefinedFunction/>

Parameter/>

在上面文档结构中relation定义为:

relation::=

aggElement定义为

aggElement::=
<aggexclude><br><aggfactcount><br><aggignorecolumn><br><aggforeignkey><br><aggmeasure><br><agglevel></agglevel></aggmeasure></aggforeignkey></aggignorecolumn></aggfactcount></aggexclude>

注意,XML元素的顺序非常重要。例如,<userdefinedfunction>元素必须在<schema>元素内部,必须在所有的<cube>、<virtualcube>、<nameset>以及<role>元素的后面,如果你在<cube>元素前包含了用户自定义函数的元素,则Schema剩下的内容会被忽略。</cube></role></nameset></virtualcube></cube></schema></userdefinedfunction>

在后面我们会给出XML schema中的每个XML元素。

相关文章:

  • 三大运营商的应用商店之路
  • OpenSSL介绍
  • 在Windows下编译OpenSSL(VS2005)【转】
  • 柏林墙倒塌20年纪念
  • 关于安装IBM的TDS的错误“error opening toollibs.cat”解决方法
  • 标记:博客访问量突破20万
  • iPhone开发指南-内存管理
  • 《火炬之光》中的“X射线”效果
  • 中缀和后缀算术表达式的分析比较
  • 清理windows资源管理器右键打开方式,新建菜单
  • 以太网环路水晶头的制作方法
  • 加密工具和unlocker的使用
  • 有意思的堪称世界级的电视广告!!:)
  • 2009中文菜谱网站排行之十大兵器
  • 中兴CS大赛推3G营销
  • [iOS]Core Data浅析一 -- 启用Core Data
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【剑指offer】让抽象问题具体化
  • C++11: atomic 头文件
  • C++类中的特殊成员函数
  • CSS魔法堂:Absolute Positioning就这个样
  • ECS应用管理最佳实践
  • es的写入过程
  • JAVA SE 6 GC调优笔记
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • laravel with 查询列表限制条数
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Redis字符串类型内部编码剖析
  • vue的全局变量和全局拦截请求器
  • 订阅Forge Viewer所有的事件
  • 基于webpack 的 vue 多页架构
  • 简单基于spring的redis配置(单机和集群模式)
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 聊聊flink的TableFactory
  • 每天10道Java面试题,跟我走,offer有!
  • 前端面试总结(at, md)
  • 无服务器化是企业 IT 架构的未来吗?
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • ${factoryList }后面有空格不影响
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)正点原子I.MX6ULL u-boot移植
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)为什么要选择C++
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (原創) 物件導向與老子思想 (OO)
  • (转) RFS+AutoItLibrary测试web对话框
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .Net7 环境安装配置
  • .NET成年了,然后呢?
  • .Net中wcf服务生成及调用
  • /var/log/cvslog 太大
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [@Controller]4 详解@ModelAttribute