- 浏览: 487376 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
Source_野驴:
...
jsp静态化和伪静态化 -
zidanzzg:
很好的知识,找到了利用异或交换数值的理论支持,谢谢分享
XOR的性质和运算 -
ueseu:
引用(2) DomainDomain域名也是Cookie的一部 ...
Cookie的组成 -
ueseu:
引用Secure取true或者false值。如果为true,那 ...
Cookie的组成 -
liqi___123:
理解得很透彻,谢谢!!
ROLAP、MOLAP和HOLAP联机分析处理区别
什么是 MDX
MDX 的全称是 Mutil Dimensional Expressions ,是由 Microsoft , Hyperion 等公司研究多维查询表达式,是所有 OLAP 高级分析所采用的核心查询语言。
MDX 可以用来进行以下操作:
1. calculated members (计算成员)
2. Calculated Cells (计算单元)
3. Security Settion (安全设置)
4. Custom member formula ( 自定义函数 )
5. Custom level rollup ()
6. Actions (动作)
7. Named “ sets ” ( 命名集合 )
8. Server side formatting (服务器数据格式化)
MDX 的基本结构
MDX 的基本结构有三种: Members 、 Tuple 、 Set 。
1. Members :指的是维度树上的一个节点,这里有一点需要指出,量度也是一个特殊的维度,所以对于普通维度上的 Member 可以有几下几种表示方法: [Customer] 或 [Time].[1996] 等,对于特殊的维度——量度而言,也可以表示一个 Member ,如: [Measures].[ unit sales] 等。
Member 的表示方法就是用中括号的形式,“ [……] ”。
2. Tuple :是由若干个 Members 组成,每一个维度上最多只能有一个 Member ,对于一个 Tuple 而言至少有一个维度,多则不限,同时对于没有列出来的那就表示为默认的 Member 。 Tuple 的表示方法是小括号“ () ”,因为其又有 Member 构成,所以通常的格式为“ ([…],[…][…],…) ”;示例:
a) ([Regin ].[USA])
b) ([product].[ computers],[time].[2008]) 。
3. Sets :同一维度上若干个 Members 的集合,或者是若干个 Tuples 的集合,但这里有一个地方需要注意,那就是如果是若干个 Tuple 组成的集合是,各个 Tuple 里的 Member 之间存在着一定的对应关系。集合的表示方法用大括号“ {} ”,所以可能的表示方法为:
a) {[time].[2008],[time].[2009],[time].[2000]} ,这里 Set 是由同一维度的若干个 Member 组成。
b) {([computer],[usa ]),([ mobile],[china])} ,这个 Set 是由两个 Tuples 组成,这里大家可以看到,在第一个 Tuple 当中,第一个 Member 是名为 computer 的产品,所以后面的 Tuple 的第一个 Member 也必须是一个产品,所以我们这里看到的是 mobile ,第一个 Tuple 里第二个 Member 是一个国家,所以第二个 Tuple 的第二个 Member 也必须是一个国家名,依次类推。
MDX 查询语句
一个标准的 MDX 查询语句就是由我们前面介绍的 MDX 的三个基本对象构成,也就是 Member 、 Tuple 、 Set 。
一个标准的 MDX 查询的语法如下:
SELECT Set ON COLUMNS,
Set ON ROWS
FROM Cube
WHERE Tuple
示例:
SELECT
{[time].[ 1997],[time].[1998]}
ON COLUMNS,
{([product].[drink],[customer].[gender].[F]),( [product].[food],[customer].[gender].[M])}
ON ROWS
FROM
[Sales]
WHERE
([Measures].[ StoreSales ])
这个 MDX 查询就表示:查询时间为 1997 和 1998 两年的 drink 类产品,女消费者和 food 类产品男消费者的 Store Sales 。
MDX 表达式
children
它的作用是列出指定分类下的所有项,如
1. [product type].[food].children ,这就表示列出产品类型为 food 的所有产品。
2. [region ].[country].children ,这就表示列出所有的国家名称。
该函数不能用在 Tuple 中
CurrentMember
当前某个 Member ,举例:
某个产品销售额贡献度计算,对于某一个产品或一种类型的产品而言它的销售额贡献度指的是它的销售额与所有产品销售额的比值,此时,如果我们要用 MDX 来计算这个贡献度的值是可以采用 CurrentMember 来实现,如:
此时我们的 MDX 表达可以是:
([product].currentMember ,[ Measures].[stores sales]) / ([product].[ all products],[Measures].[stores sales])
同时因为默认情况下指的就是 currentMember ,所以上面的 currentMember 可以去掉:
([Measures].[ stores sales]) / ([product].[ all products],[Measures].[stores sales])
所有 MDX 表达式的写法是由若干个 Tuple 组成 ,比如上面的这个表达式就是由两个 Tuple 的相除构成。
prevMember 和 nextMember
这两个元素分别指的是当前 Member 的上一个 Member 和当前 Member 的下一个 Member 。
利用这两个元素我们可以来实现实际当中常见的同期比(前期比),所谓的同期比指的 是:
(当前 member- 当前 member 的前一个 member ) / 当前 member 的前一个 member
对应到 MDX 表达式我们可以用 prevMember 和 nextMember 来实现,如:
(([time].currentMember ,[ Measures].[store sales])-([time].prevMember ,[Measures].[storessales ]))
/
([time].prevMember ,[ Measures].[store sales])
当然因为 currentMember 可以省略,所以上面的写法也可以是:
(([ Measures ].[store sales])-([time].prevMember ,[Measures].[storessales ]))
/
([time].prevMember ,[ Measures].[store sales])
Parents 、 FirstChild 、 Descendants
下面的这张图就显示一个树
这张图中 all 这个节点是 97 和 98 的 parents , 97 和 98 也是 all 的 children ,同时 97 是 all 的 firstChild
如果我们要取到 97 下的所有的月份,那么我们就需要用 Descendants 来实现,它的语法是:
Descendants( [time].[97],month) ,这里的 month 是一个 level 的名称。所有它的格式为: Descendants([ 一个 Member], 一个 level 的名称 )
比如在食品销售当中,我们要知道哪一类的食品更受消费者欢迎,这样我们需要只知道各类食品的销量,比如食物( food )、饮料 (drink) 等的具体销量 (unit sales) ,然后再计算出所有食品总的销量( total sales ) , 如果采用 MDX 我们可以很容易的实现,采用 MDX 后的计算哪种食品更受欢迎的表达式如下:
([food].currentMember ,[ Measures].[unit sales])
/
([food].currentMember.parent ,[ Measures].[total sales])
因为 currentMember 可以省略,所以上面的写法又可以是:
( [ Measures].[unit sales])
/
([food].currentMember.parent ,[ Measures].[total sales])
未完待续 ……
发表评论
-
从ORACLE移植到DB2
2013-06-02 23:57 909在实际的软件项目的开发过程中,特别是在企业的应 ... -
Oracle中v$sqlarea与v$sql_plan全面分析
2013-05-28 07:59 0v$sql、v$sqlarea 、v$sqltext 这 ... -
oracle中以常用系统表和视图
2013-05-25 11:37 0DBA_TABLES、ALL_TABLES以及USE ... -
ORACLE审计小结
2013-05-25 11:27 01、什么是审计审计(Aud ... -
Oracle中随机抽取N条记录
2013-05-18 03:32 0转载来源:http://www.oraf ... -
jndi调用时,各种应用服务器InitialContext的写法
2013-05-14 12:55 0调用ejb时,如果客户端和ejb不在同一个jvm,就要设置I ... -
Oracle session active 和 inactive 状态说明
2013-05-14 12:53 0一. Session 状态说明 可 ... -
v$active_session_history视图
2013-05-14 12:52 0脚本摘自《教你如何成为oracle 10g OCP》 ... -
oracle系统表v$session、v$sql字段说明
2013-05-14 12:24 0oracle系统表v$session、v$sql表的列字段说 ... -
Oracle中随机取表中记录的方法
2013-04-15 21:10 71.快速随机取记录(推荐使用): selec ... -
db2中断开数据库连接
2013-02-01 16:56 1299db2中connect reset、disconnect c ... -
DB2日常维护之REORG命令优化数据库性能
2013-02-01 11:51 1194一个完整的日常维护规范可以帮助 DBA 理顺每天需要的操作 ... -
SPSS 19.01多国语言版破解版(包括简体中文)
2012-08-13 13:43 3063源地址:http://hi.baidu.com/kingz ... -
Oracle中用exp/imp命令快速导入导出数据
2011-05-12 10:25 1306【用 exp 数 据 导 出】: 1 将数据库TEST完全导 ... -
EXP-00091 Exporting questionable statistics
2011-05-12 10:04 1413对一个DBA或需使用exp,imp的普通用户来说,在我们做ex ... -
海量数据的删除策略
2011-03-15 14:48 8091.延迟删除 一条数据会被很多数据引用。当被引用的数据删除时, ... -
NoSQL的简单介绍
2011-02-23 15:41 1148NoSQL 是非关系型数据存储的广义定义。它打 ... -
OLAP介绍
2011-01-28 16:44 2537OLAP介绍 一、发展背景二、什么是OLAP?三、相关 ... -
ROLAP、MOLAP和HOLAP联机分析处理区别
2011-01-28 16:31 6299第一篇: ... -
oracle的分析函数over及开窗函数
2011-01-11 18:23 973oracle的分析函数over ...
相关推荐
多维表达式(MDX),多维表达式(MDX),多维表达式(MDX).
面向网络安全的多维正则表达式匹配算法分析.pdf
多维表达式(Multidimensional Expressions,简称MDX)是一种专为在线分析处理(Online Analytical Processing,OLAP)设计的查询语言。它在数据仓库和商业智能领域扮演着重要角色,允许用户以多维的方式对数据进行...
使用多维数据集表达式和子多维数据集表达式 使用维度表达式 使用成员表达式 使用元组表达式 使用集表达式 使用标量表达式 使用空值 运算符(MDX 语法) 算术运算符 位运算符 比较运算符 串联运算符 集运算符 一元...
在`fee.jsp`页面中,我们可以利用`jp:mondrianQuery`标签来编写多维查询表达式,通过指定`dataSource`和`catalogUri`来连接数据库并加载Schema。 数据库连接有两种方式:一是直接使用JDBC,如在XML中指定`jdbc...
本手册内容收集整理自网络公共资源文档,为了方便PowerBI用户参考使用而作,请勿用于商业用途。
关于mdx资源的实用表达式,系统的对mdx进行描述,方便进行应用
MDX语言是一种用于OLAP的多维表达式语言,它能够处理多维数据查询,但存在语法复杂和适用性局限等问题。随着企业级数据仓库的建立和数据决策支持需求的增长,对于一种更通用、性能更优的多维数据查询语言的需求日益...
4. **MDX(多维表达式)** MDX是用于查询和操作多维数据的专用语言,VS2005 SSAS提供了MDX编辑器,使得开发者可以创建复杂的查询和计算,以满足特定的业务需求。 5. **Cube设计** 在VS2005中,你可以通过图形化的...
此外,文章还提到了空间多维数据模型和空间立方体的数学表达式。通过对多维数据模型进行数学建模,可以创建更加高效的数据分析工具。例如,星型模式的核心是一个事实表,围绕它的是一系列维表,它们通过数学公式联系...
3. **MDX(多维表达式)语言**: MDX是专门用于查询和操作多维数据集的语言。在Android报表组件中,可能需要理解和编写MDX查询以获取所需的数据视图。 4. **报表设计和布局**: 安卓多维报表组件应该提供易于使用...
通过ADOMD.NET,你可以执行MDX(多维表达式)和DMX(数据挖掘扩展)查询,这两种语言都是专门设计用于处理多维数据集的。ADOMD.NET提供了元数据浏览、数据检索、订阅事件等功能,使得构建数据分析工具或报表变得简单...
使用 Analysis Service 编写多维数据集 本教程适合 SSAS 初学者使用,不包括数据...6. 多维表达式 MDX 语法简析 本教程涵盖了使用 Analysis Service 编写多维数据集的基本概念和步骤,是 SSAS 初学者非常实用的指南。
它支持MDX(多维表达式)语言,这是一种专门用于在多维数据集上进行复杂分析的查询语言。 4. **缓存优化**:为了提高性能,Mondrian使用缓存技术来存储预计算的结果,减少重复查询数据库的需求,尤其适用于大数据...
- 使用MDX(多维表达式)语言进行查询和分析。 - 数据切片和切块,以及钻取操作,提供用户交互式分析体验。 - 示例和案例研究,展示如何在实际业务场景中应用OLAP。 **01.数据仓库与多维建模基础.PPT** 此文件可能...
在后台,可以使用SQL查询或者LINQ表达式进行数据聚合;在前台,可以监听dataGridView的事件,如CellValueChanged,根据新值更新统计信息。此外,也可以使用第三方控件库,如DevExpress的GridView,它们提供了内置的...
3. MDX(多维表达式):MDX是用于查询多维数据的语言,提供了一种强大且灵活的方式来访问数据立方体中的信息。 三、Analysis Services的实施步骤 1. 设计阶段:确定业务需求,设计维度和度量,创建数据源视图和立方...
#### 五、多维表达式MDX语法简析 MDX(Multidimensional Expressions)是一种专门用于多维数据集查询的语言。了解和掌握MDX的基本语法对于有效利用多维数据集进行复杂分析至关重要。MDX支持多种类型的查询,如成员...