15个很具代表性的MDX查询语句。
出处 www.sqlmag.com 原文下载 原作者Russ Whitney 。
我只是对其作了翻译(其中括号部分是我的观点),并对每个mdx语句出现的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)而导致错误。