MDX,多维表达式(multi-dimensional expressions)的英文缩写词,是一种编程语言语法,支持多维对象与数据的定义和操作。MDX 在很多方面与结构化查询语言 (SQL) 语法相似,但它不是 SQL 语言的扩展;事实上,MDX 所提供的一些功能也可由 SQL 提供,但是不如MDX有效或直观。
如同 SQL 查询一样,每个 MDX 查询都要求有数据请求(SELECT 子句)、起始点(FROM 子句)和筛选(WHERE 子句)。这些关键字以及其它关键字提供了各种工具,用来从多维数据集析取数据的特定部分。MDX 还提供了可靠的函数集,用来对所检索的数据进行操作,同时还具有用用户定义函数扩展 MDX 的能力。如同 SQL,MDX 提供管理数据结构的数据定义语言 (DDL) 语法。其中有用于创建(和删除)多维数据集、维度、度量值以及它们的坐标对象的 MDX 命令。
当然我也没有深入的去研究MDX,只是在我需要的基础上找到了相应的资料来完成我的需要,并简单的了解一下。
利用CA导出生成报表需要知道现存流程的数目,现存流程数目的计算方法只有知道所有的发起流程 减去所有的结束流程,看似比较简单利用sql语句写出来确实很容易,不过这次需要在Visio Studio Analysis Service中利用MDX。
在CA提供的measure中包括incoming和outgoing对于这两个词翻译成中文很简单,可是我却不知道代表什么意义。对于它我开始有两种理解 一种是 本月现有的流程和结束的流程;另一种是发起的流程和结束的流程。经过我对数据数据以及在Visual Studio中看的数据得出的结论就是 incoming和outgoing的解释为第二种:发起流程和结束流程。
下面是某个流程的统计数据
日期 | 发起 | 结束 | 剩余 |
12-8 | 1 | 0 | 1 |
12-9 | 4 | 0 | 5 |
12-10 | 16 | 9 | 16+5-9=12 |
12-11 | 9 | 7 | 12+9-7=14 |
12-12 | 10 | 8 | 10+14-8=16 |
13-01 | 52 | 35 | 16+52-35=33 |
13-02 | 38 | 33 | 33+38-33=38 |
13- 03 | 79 | 62 | 38+79-62=55 |
这样我需要知道每个月的剩余流程只有通过开始说的方法 把所有的发起流程减去所有的剩余流程则是剩余的流程也就是客户想要的。
发起流程发起的总计:
Sum(
PeriodsToDate(
[Time].[Time].[(ALL)],
[Time].[Time].CurrentMember
),
([Measures].[Incoming])
)
总结束:
Sum(
PeriodsToDate(
[Time].[Time].[(ALL)],
[Time].[Time].CurrentMember
),
( [Measures].[Outgoing])
)
未结束的流程:
[Measures].[总发起流程数目] - [Measures].[总结束流程的数目]
本月流程数:
本月流程即本月剩余的流程 加上已结束的流程
periodsToDate ( level , member )
返回与指定成员处于同一级别的同胞成员集,并受指定级别限制。它先查找处于“level”级别的“member”成员的祖项,然后返回此祖项中与“member”成员处于同一级别的子项(直到包括“member”成员)。通常与时间维度配合使用。
返回member成员的level祖项的子项直至包括到member
遇到问题更多的眼界,也就是知识面的宽广,如果不知道这里面是什么语言,也就没有办法查询也就解决这个问题!不过知识面图有宽广也是没有用的,要有自己擅长的部分!!!