多维数据化分析之MDX schema入门

        因近期学习mondrian schema和mdx语法,学习历程较艰辛,故希望以系列文章予以记录,且方便今后查阅。
        书写schema的过程即是构造你的多维数据集的过程,此步相当重要,直接关系到今后查询时效率的高低,
好比建立一个糟糕的数据库,做复杂需求时,即便是神仙也只能“望库兴叹”,只可惜初涉此域,我也只能讲讲基本概念了,希望能帮助大家更好的理解多维数据集这么个玩意儿。
        先讲建立cube,cube即数据立方的意思,可以理解为数据仓库中被挑选出来当成研究对象的数据集,举个简单的例子:
        现有一张工资表salary,字段有id, customer_id, salary,id为该表主键,customer_id为该表外键,
连接到表customer,表结构为customer_id, gender,工资表即可当成一个简单的cube,cube中的事实表即Salary。
有了研究对象,接下来自然是确定研究角度了,研究角度对应于schema中的dimensions,dimension可以对应另一张表,也可以是cube中的事实表,
此例中将Customer当成维度表,维度表和事实表必须要有关联,否则毫无关系的两张表能擦出什么火花?!
        接下来你有了研究对象,有了研究角度,那到底该研究什么?这就对应于schema中的Measure(度量),此例中选择工资的综合为统计指标。

<Schema name="Salary">

              <Cube name="Salary" cache="true" enabled="true">

          <Table name="Salary" alias="">
          </Table>
          <Dimension type="StandardDimension" foreignKey="customer_id" name="Gender">
                <Hierarchy name="h1" hasAll="true" allMemberName="All Genders" primaryKey="customer_id">
                    <Table name="customer">
                    </Table>
                    <Level name="Gender" table="customer" column="gender" uniqueMembers="true">
                    </Level>
                </Hierarchy>
          </Dimension>
          <Measure name="Salary In Total" column="salary" aggregator="sum" visible="true">
          </Measure>

              </Cube>
        </Schema>

 

        这时你就可以从customer表中gender的角度统计salary表中工资总和了,即salary表中男性、女性以及未知性别的工资总额了。
        MDX查询语句为
        select {[Measures].[Salary In Total]} on columns,
                   {[Gender].[Gender].Members} on rows
        from [Salary]

        btw:文章没有细致讲语法,只是抛砖引玉而已。关于写mondrian schema的语法,详见http://mondrian.pentaho.com/documentation/schema.php
        关于mdx的语法及内置函数,详见http://msdn.microsoft.com/en-us/library/ms145970.aspx
        既然走上了这条“不归路”,这两个网站你想不去都不行了.

MDX 中的重要概念 使用成员、元组和集 (MDX) MDX 语法元素 标识符 表达式 使用多维数据集表达式和子多维数据集表达式 使用维度表达式 使用成员表达式 使用元组表达式 使用集表达式 使用标量表达式 使用空值 运算符(MDX 语法) 算术运算符 位运算符 比较运算符 串联运算符 集运算符 一元运算符 赋值运算符 函数(MDX 语法) 使用字符串函数 使用数学函数 使用逻辑函数 使用成员函数 使用元组函数 使用集函数 使用维度函数、层次结构函数和级别函数 使用存储过程 (MDX) 注释(MDX 语法) 保留关键字(MDX 语法) MDX 查询基础知识 基本 MDX 查询 EXISTING 关键字 用查询轴和切片器轴限定查询 指定查询轴的内容 指定切片器轴的内容 在简单示例中使用查询轴和切片器轴 在查询中建立多维数据集上下文 在 MDX 中生成子多维数据集 在 MDX 中生成命名集 创建查询作用域的命名集 创建会话作用域的命名集 在 MDX 中生成计算成员 在 MDX 中生成单元计算 创建和使用属性值 操作数据 修改数据 使用变量和参数 MDX 脚本编写基础知识 基本 MDX 脚本 管理作用域和上下文 错误处理 支持的 MDX MDX 语言参考 MDX 语法约定 MDX 语句参考 MDX 脚本编写语句 MDX 数据定义语句 MDX 数据操作语句 MDX 运算符参考 --(注释) -(排除) -(负) -(减) *(叉积) *(乘) /(除) ^(幂) /*...*/(注释) //(注释) :(范围) +(加) +(正) +(字符串串联) +(联合) <(小于) <=(小于或等于) (不等于) =(等于) >(大于) >=(大于或等于) AND IS NOT OR XOR MDX 函数参考 AddCalculatedMembers Aggregate AllMembers Ancestor Ancestors Ascendants Avg Axis BottomCount BottomPercent BottomSum CalculationCurrentPass CalculationPassValue Children ClosingPeriod CoalesceEmpty Correlation Count(维度) Count(层次结构级别) Count(集) Count(元组) Cousin Covariance CovarianceN Crossjoin Current CurrentMember CurrentOrdinal CustomData DataMember DefaultMember Descendants Dimension Dimensions Distinct DistinctCount DrilldownLevel DrilldownLevelBottom DrilldownLevelTop DrilldownMember DrilldownMemberBottom DrilldownMemberTop DrillupLevel DrillupMember Error Except Exists Extract Filter FirstChild FirstSibling Generate Head Hierarchize Hierarchy IIf Intersect IsAncestor IsEmpty IsGeneration IsLeaf IsSibling Item(成员) Item(元组) KPIGoal KPIStatus KPITrend KPIWeight KPICurrentTimeMember KPIValue Lag LastChild LastPeriods LastSibling Lead Leaves Level Levels LinkMember LinRegIntercept LinRegPoint LinRegR2 LinRegSlope LinRegVariance LookupCube Max MeasureGroupMeasures Median Members(集) Members(字符串) MemberToStr MemberValue Min Mtd Name NameToSet NextMember NonEmpty NonEmptyCrossjoin OpeningPeriod Order Ordinal ParallelPeriod Parent PeriodsToDate Predict PrevMember Properties Qtd Rank RollupChildren Root SetToArray SetToStr Sib
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值