欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

[原]mdx会合操作

更新时间: 2014-01-05 02:29:37 责任编辑: Author_N1

 

[原]MDX集合操作
    无论是数据库还是数据仓库,集合( SET )操作都是一个最基本,也是最重要的操作之一.熟练各种集合的基本运算,是MDX的基本要求之一.

MDX中,集合包括5种基本运算.
1.UNION 或 + 并集
2.INTERSECT 交集
3.EXCEPT 或 - 差集
4.CROSSJOIN 或 * 乘集
5.EXTRACT 或 / 除集

这5个集合运算可能从现在的 SET 中构造出新的SET .下面尽量引用MSDN并附加一些个人说明来描述这几个函数的用法.

一.UNION 并集
[img=http://album.hi.csdn.net/app_uploads/MSTOP/20090723/040500363.p.gif?d=20090723040530113][/img]
执行一个集运算,返回两个集的并集,并删除重复成员。

语法 
Set_Expression + Set_Expression

参数 
Set_Expression 
返回集的有效多维表达式 (MDX)。

返回值 
一个包含两个指定集的成员的集。

注释 
+(Union) 运算符的功能与 Union (MDX) 函数相同。

示例 

SELECT 
    [Date].[Calendar].[Calendar Year].Members ON 0,
    {[Sales Territory].[Sales Territory].[Country].[United States]} +
     {[Sales Territory].[Sales Territory].[Country].[Canada]} ON 1
FROM
    [Adventure Works]
WHERE
    ([Measures].[Gross Profit Margin])

说明:
1.只有维度性相同的两个集合才可以产生并集.如同为商品维或同为时间维,不能够一个集合是商品维,而另一个集合是时间维.
2.并集产生的新集合已作去重处理,即 SET1 和 SET2 中有相同的元组,则合并后相同的元组只出现一次.

二.INTERSECT 交集
[img=http://album.hi.csdn.net/app_uploads/MSTOP/20090723/040501551.p.gif?d=20090723040612832][/img]
返回两个输入集的交集,可以选择保留重复项。 

语法 
Intersect(Set_Expression1 , Set_Expression2 [ , ALL ] ) 

参数 
Set_Expression1 
返回集的有效多维表达式 (MDX)。

Set_Expression2 
返回集的有效多维表达式 (MDX)。

注释 
Intersect 函数返回两个集的交集。 默认情况下,此函数会先删除两个集合中的重复项,然后再对这两个集合求交集。
可以使用可选的 ALL 标志来保留重复项。 如果指定了 ALL,Intersect 函数除了照常对非重复的元素求交集以外,还会对第一个集与

第二个集中的重复项求交集。

示例
例如,Intersect({[1994], [1995], [1996]}, {[1995], [1996], [1997]}) 
返回集 {[1995], [1996]}。

说明:
1.运算的集合必须有相同的维度性.
2.如果不指定ALL参数(默认),则返回去重结果,如果指定ALL参数,则保留重复结果.


三.EXCEPT 或 - 差集
[img=http://album.hi.csdn.net/app_uploads/MSTOP/20090723/040501254.p.gif?d=20090723040632379][/img]
执行一个集运算,返回两个集之间的不同项,并删除重复成员。

语法 
Set_Expression - Set_Expression 

参数 
Set_Expression 
返回集的有效多维表达式 (MDX)。

返回值 
由两个指定集的非共享成员组成的集。

注释 
- (Except) 运算符的功能与 Except 函数相同。

示例 
以下示例演示此运算符的用法:
SELECT 
   [Measures].[Order Quantity] ON COLUMNS,
   [Product].[Product Categories].[All].Children 
   - [Product].[Product Categories].[Components] ON ROWS
FROM
    [Adventure Works]


四.CROSSJOIN 或 * 乘集

执行一个集运算,返回两个集的叉积。

语法 
Set_Expression * Set_Expression 

参数 
Set_Expression 
返回集的有效多维表达式 (MDX)。

返回值 
一个包含两个指定参数的叉积的集。

注释 
* (Crossjoin) 运算符的功能与 Crossjoin 函数相同。

示例 
下面的示例演示了此运算符的用法。
SELECT 
    [Date].[Calendar].[Calendar Year].Members *
    [Reseller].[Reseller Type].Children ON 0,
    [Product].[Category].[Category].Members ON 1
FROM
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:29:37
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/10498/
本文WWW.DOC100.NET DOC100.NET版权所有。