日期:2014-05-16  浏览次数:20449 次

15个经典的MDX查询语句

15个很具代表性的MDX查询语句


???? 读者请求最多的是更多的MDX信息。他们通常要求更多的MDX例子,在这里,我提供15个典型的MDX语句,用的是SQL Server 2000 Analysis Services' FoodMart 2000 sample cubes,以下例子都以Sales多维数据集为例。


1.
在美国所有州都销售的有那些产品品牌?

Listing 1 创建了个自定义集合SoldInUsa,该集合排除了在整个美国Unit Sales为空值的品牌。该查询定义了一个计算成员,描述Current State是否销售Current Product;如果有销售返回Yes,否则返回No。这个查询在columns显示States,在Rows显示Produts,单元值区域依据product-state的聚合交集显示YesNo.

??? 或许你已经发现,该查询会返回的结果同个品牌会返回多次。Sales Cube是依据brand来给Products分类的(把产品类别分成不同的品牌),所以如果某品牌生产多种产品,该品牌在层次结构中将多次出现。乍一看,这种重复出现确实是个问题,大概你会把多次出现的同个品牌当成不同的品牌。举个例子,一个公司(对应一个品牌)生产luggageclothes,作为本例分析,最好将其当成不同品牌来理解,这样才不至于因为其不销售luggage就判断该品牌没有销售(实际情况其可能销售clothes)而导致错误。

?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,