翻译介绍15个经典的MDX查询-01

15个很具代表性的MDX查询语句。
            出处 www.sqlmag.com  原文下载 原作者Russ Whitney 。
    我只是对其作了翻译(其中括号部分是我的观点),并对每个mdx语句出现的mdx常用函数略作解释。(如翻译有误、理解不够的地方,敬请指正!)
     读者请求最多的是更多的 MDX 信息。他们通常要求更多的 MDX 例子,在这里,我提供 15 个典型的 MDX 语句,用的是 SQL Server 2000 Analysis Services' FoodMart 2000 sample cubes ,以下例子都以 Sales 多维数据集为例。

      
  LISTING 1: Determining Products Sold in Each State
说明: 查询在所有州都销售的品牌。
with set [SoldInUSA] as ' Filter ([Product].[Brand Name] .Members , Not IsEmpty ( ([USA], [Unit
Sales]) ))'
  member [Measures].[SoldInState] as ' iif ( IsEmpty (([Product] .CurrentMember , [Unit Sales],
[Customers] .CurrentMember )), "No" , "Yes" )'
select [USA] .children on COLUMNS ,
  [SoldInUSA] on ROWS
from Sales
where ([SoldInState])

   查询结果展示:

Filter
返回根据搜索条件对集合进行筛选所得到的集合。
例子
SELECT {[Measures].[Store Sales] } ON COLUMNS,
 { filter(time.allmembers,[Measures].[Store Sales]>50000)
}    ON rows from sales  
iif
返回由逻辑测试确定的两个数值或字符串值之一。
例子
with member measures.abc as ' iif ( isempty (measures.[unit sales]), " 空了 " , " 不空 " )'
  SELECT { { { [Time].&[1997] } * { [Measures].[Unit Sales],measures.abc } } } ON COLUMNS , { DESCENDANTS ( [Store].[All Stores], [Store].[Store Name] ) } ON ROWS   FROM [Sales]
 
     1. 在美国所有州都销售的有那些产品品牌? Listing 1 创建了个自定义集合SoldInUsa,该集合排除了在整个美国Unit Sales为空值的品牌。该查询定义了一个计算成员,描述Current State是否销售Current Product;如果有销售返回Yes,否则返回No。这个查询在columns显示States,在Rows显示Produts,单元值区域依据product-state的聚合交集显示Yes或No.
    或许你已经发现,该查询返回的结果同个品牌可能返回多次。Sales Cube是依据brand来给Products分类的(把产品类别分成不同的品牌),所以如果某品牌生产多种产品,该品牌在层次结构中将多次出现。乍一看,这种重复出现确实是个问题,大概你会把多次出现的同个品牌当成不同的品牌。举个例子,一个公司(对应一个品牌)生产luggage和clothes,作为本例分析,最好将其当成不同品牌来理解,这样才不至于因为其不销售luggage就判断该品牌没有销售(实际情况其可能销售clothes)而导致错误。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值