当前位置:首页 > 开发 > 开源软件 > 正文

MDX练习(一) ------兼顾MSAS与mondrian

发表于: 2009-09-17   作者:dinguangx   来源:转载   浏览次数:
sql
摘要: /* .members 查询级别下的所有成员.但是, 如果维度中包含多个层次,就必须明确指定level.member,而不能通过[Dimension].members来进行查询 */ select [Time By Day].[the_month].members on rows, {[Measures].[Store Cost]} on columns from [Sales
/* .members 查询级别下的所有成员.但是,
如果维度中包含多个层次,就必须明确指定level.member,而不能通过[Dimension].members来进行查询 */
select [Time By Day].[the_month].members on rows,
      {[Measures].[Store Cost]} on columns
from [Sales]
     
/* .children 查询成员下的成员,不包括all
* 在AS中,可以将children直接作用于level,而mondrian中只能将children作用于member
*/
select [Time By Day].[the_month].children on rows,
      {[Measures].[Store Cost]} on columns
from [Sales]  
     
/* Descendants(member[,[level],[flag] ]) 查询成员的后代成员 */
select Descendants([Time By Day].[the_month].[April]) on rows,
      {[Measures].[Store Cost]} on columns
from [Sales]  
select Descendants([Time By Day].[the_year].[1997],[Time By Day].[the_month],self) on rows,
      {[Measures].[Store Cost]} on columns
from [Sales]
     
/* non empty{} 去除集合中的空切片 */
select non empty {Descendants([Time By Day].[the_month].[April])} on rows,
      {[Measures].[Store Cost]} on columns
from [Sales]           
     
/* 使用元组来进行更高级的查询 -- 元组中的每一个成员都来自于不同的维度,而且不能由元组来构成元组*/
select {([Time By Day].[the_month].[April],[Measures].[store sales]),([Time By Day].[the_month].[June],[Measures].[store cost])} on 0,
      non empty{[Product].[Product].children} on 1
from [Sales]
where ([Customer].[State Province])
     
/* CrossJoin(set,set) 返回一个交叉集合 */
select crossjoin({[Time By Day].[the_month].[April],[Time By Day].[the_month].[June]},{[Measures].[store sales],[Measures].[store cost]}) on 0,
      {[Product].[Product].children} on 1
from [Sales]
where ([Customer].[State Province])
     
/* filter(set,boolean) 返回一个过滤之后的集合 */
select crossjoin({[Time By Day].[the_month].[April],[Time By Day].[the_month].[June]},{[Measures].[store sales],[Measures].[store cost]}) on 0,
      filter({[Product].[Product].children},([Time By Day].[the_month].[April],[Measures].[Store Sales]) > 20.0) on 1
from [Sales]
where ([Customer].[State Province])
     
/* order(set,tuple,flag) 返回一个有序集合
     BDESC 会忽略层次结构
     DESC   将元组的层次结构和维度组成考虑在内,生成一个更复杂的有序集*/
select crossjoin({[Time By Day].[the_month].[April],[Time By Day].[the_month].[June]},{[Measures].[store sales],[Measures].[store cost]}) on 0,
      order(
   filter({[Product].[Product].children},([Time By Day].[the_month].[April],[Measures].[Store Sales]) > 20.0)
   ,([Time By Day].[the_month].[April],[Measures].[Store Sales])
   BDESC) on 1
from [Sales]
where ([Customer].[State Province])   
     
/* 计算成员:通过{with member 成员标识符 AS '成员计算公式' [,properties]} 来定义
        (1)如果计算成员作为另一个成员的子成员出现,那么父成员的名称必须也出现,作为成员标识符的一部分.
        (2)不允许计算成员成为另一个计算成员的子成员
    */
with
member [Measures].[profit] as   [Measures].[Store Sales] - [Measures].[Store Cost]
       ,format_string = "$#.00"

member [Measures].[percent profit] as [Measures].[profit] / [Measures].[Store Sales]
       ,format_string = "#.00%"
select {[Measures].[Store Cost],[Measures].[Store Sales],[Measures].[profit],[Measures].[percent profit]} on columns,
      filter({[Product].Product.children},[Measures].[percent profit] > 0.6) on rows
from [sales]

/* 计算成员的优先级问题:如果两个计算成员分别位于行和列上,需要使用solve_order属性来解决优先计算的问题 */
with
member [Measures].[profit] as   [Measures].[Store Sales] - [Measures].[Store Cost]
       ,format_string = "$#.00"
       ,solve_order = 0

member [Time By Day].[quarter].[growth] as ([Time By Day].[quarter].[Q2] - [Time By Day].[quarter].[Q1]) / [Time By Day].[quarter].[Q1]
       ,format_string = "#.00%"
       ,solve_order = 1
select {[Measures].[Store Cost],[Measures].[Store Sales],[Measures].[profit]} on columns,
      {[Time By Day].[quarter].[Q1],[Time By Day].[quarter].[Q2],[Time By Day].[quarter].[growth]} on rows
from [sales]

MDX练习(一) ------兼顾MSAS与mondrian

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
软件版本 Mondrian 3.6.1 关于网上的Mondrian的教程有很多,不过好像都是copy的都长的一个样,并且
一个简单的Mondrian例子(部分参考某个大牛的文档~~)希望大家学到东西~ 可以详细参考豆丁网上的一个
例子模型 以下的MDX中用到的Hierarchy如下: 百分比 1)某个子项占总体的百分比。比如:每种Product
没做过单点登录方面的内容,思考了好久,也参考了很多开源方案,基本上是基于cookie的方式,前两天
软件版本 Mondrian 3.6.1 上一篇文章介绍了如何将Mondrian集成到我的自己的WebApp中并且以XMLA的形
Scala基础学习&l练习 1. 在Scala REPL中键人3.,然后按Tab键。有哪些方法可以被应用 在Scala REPL中
一、练习步骤 如果用过NGUI的Anchor,我们知道在2.x的版本有UIAnchor组件(下图左),3.x版本中,每
写一个9*9乘法表 #include<iostream.h> void plus(int a,int b) { cout<<a<<"*"&
查阅我的其它有关 MDX 的学习笔记 - <<Microsoft SQL Server 2008 MDX Step by Step>>
SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 SSRS 系列 - 使用带参数的 MDX 查询
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号