MDX基本查询语句
MDX是一种多维查询表达式,是所有OLAP高级分析所采用的核心查询语言。
那什么是OLAP呢?
OLAP(Online AnalyticalProcessing)是一种数据处理技术,专门设计用于支持复杂的分du析zhi操作,侧重对决策人员和高层管dao理人员的决策支持,可以根据分析人员的要求快速、灵活地进行大数据量的复杂查询处理,并且以一种直观而易懂的形式将查询结果提供给决策人员,以便他们准确掌握企业(公司)的经营状况。
OLAP展现在用户面前的是一幅幅多维视图。维(Dimension):是人们观察数据的特定角度,是考虑问题时的一类属性,属性集合构成一个维(时间维、地理维等)。OLAP的基本多维分析操作有钻取(Drill-up和Drill-down)、切片(Slice)和切块(Dice)、以及旋转(Pivot)等。
1.mdx语句的基本查询实列
我所使用mdx语句是需要获取IBM® Cognos® TM1® Web中的数据,这个好像统称为cube吧,第一次接触也不太明白。
其实这也是类似一个execl表 ,有行、列、上下文,相当于我们从ex表中取数,取某一列中的某一行数据,“上下文” 类似作为sql中的where条件
java开发人员一般不涉及去定义cube里的任何数据,以及规则等,一般由技术人员弄。
正常来我们只需要根据cube逻辑来进行取数。
例如:这是一组cube取数逻辑。我们根据这个组取数逻辑对上图中的cube进行取数,cube栏类似作为表 from C0201_项目基本信息, 维度: 情景、版本、组织_项目、指标_基本信息 四个纬度分别对应上图的纬度;各维度 ":“后的是纬度子集
查询基本信息各指标(操盘类型、拿地时间、土地出让金、总建筑面积、非车位总可售面积、主数据版本)数据:
select {[指标_基本信息].[操盘类型],[指标_基本信息].[土地实质获取时间],[指标_基本信息].[土地出让金(万元)],[指标_基本信息].[总建筑面积],[指标_基本信息].[可售面积(不含车位)(㎡)]} on columns , {[组织_项目].[子集]} on rows from [C0201_项目基本信息] where
([情景].[最新动态版],[版本].[工作版])
注意: 1.每个纬度尽量加上”[]"避免出现不知情的错误。
2.每个纬度都必须存在,名称必须一样,同样纬度子集也是。
2.MDX中的简单函数和操作符
1、逗号(,)与冒号(:)
逗号可以通过枚举元素并用逗号来隔开构造一个集,例如下面示例中用到的例子。
{[TIME].[2005].[01]], [TIME].[2005].[12]}
该表达式产生一个包含2005年1月和12月的集。
冒号用同一级别的两个成员作为端点,来表示这两个端点间的所有成员(与EXCEL中的指定单元格范围的用法类似)。在冒号两边可以是相同的成员,表示集中只有一个成员。例如:
{[TIME].[2005].[01]: [TIME].[2006].[12]}
该表达式表示从2005年01月到2006年12月的所有月份。
2、.MEMBERS 获取所有成员
无论用于检索,还是作为更复杂的操作的基础,获得一个维度、层次结构或者级别的成员的集是非常普遍的操作。维度、层次结构或者级别放置在.MEMBERS操作符的左边,可以返回由该元数据范围内所有成员构成的集。
例如:
[TIME].[MONTHS].MEMBERS
该表达式返回时间维度下的月这一级别的所有成员(即所有月份)。
4、.PREMEMBER获取指定成员的前一个成员
5、.NEXTMEMBER获取指定成员的后一个成员
6、使用.CHILDREN获得一个成员的子成员
7、.FIRSTCHILD 获取指定成员的第一个子成员
8、.LASTCHILD获取指定成员的最后一个子成员
9、FILTER() 过滤
语法:FILTER(SET,BOOLEAN-EXPRESSION)
10、ORDER() 排序
语法:ORDER (SET,EXPRESSION,FLAG)
小编第一次接触cube,记录一下。