不同的集合可以通过一定的方式组成新的集合,常提到的几种联合集合的方式如下图所示:
语法 –
Union ({Set1}, {Set2} [, ALL])
Intersect ({Set1}, {Set2} [, ALL])
Exception ({Set1}, {Set2} [, ALL])
这三个函数都要求作为参数的两个集合必须属于同一个纬度,被函数返回的集合中的元组都是唯一的,相当于在返回的集合上使用了 DISTINCT 一样,除非使用 ALL 来标示不需要DISTINCT。
通常情况下,Union 和 Exception 使用的频率会多一些,所以MDX 语言为它们提供了一种更简单的表达方式。可以使用 + 和 – 来替代,但是这时就不能使用 ALL 标志了。
SELECT {([Measures].[Reseller Sales Amount])} ON COLUMNS, TopCount( {[Product].[Product].[Product].Members}, 10, ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2004]) ) ON ROWS FROM [Step-by-Step];
SELECT {([Measures].[Reseller Sales Amount])} ON COLUMNS, Union( TopCount( {[Product].[Product].[Product].Members}, 10, ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2003]) ), TopCount( {[Product].[Product].[Product].Members}, 10, ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2004]) ) ) ON ROWS FROM [Step-by-Step];
总共只有12个产品查询出来,很显然有一些产品既在第一个集合中也在第二个集合中存在。
SELECT {([Measures].[Reseller Sales Amount])} ON COLUMNS, Except( TopCount( {[Product].[Product].[Product].Members}, 10, ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2003]) ), TopCount( {[Product].[Product].[Product].Members}, 10, ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2004]) ) ) ON ROWS FROM [Step-by-Step];
SELECT {([Measures].[Reseller Sales Amount])} ON COLUMNS, Except( TopCount( {[Product].[Product].[Product].Members}, 10, ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2004]) ), TopCount( {[Product].[Product].[Product].Members}, 10, ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2003]) ) ) ON ROWS FROM [Step-by-Step];
SELECT {([Measures].[Reseller Sales Amount])} ON COLUMNS, Intersect( TopCount( {[Product].[Product].[Product].Members}, 10, ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2004]) ), TopCount( {[Product].[Product].[Product].Members}, 10, ([Measures].[Reseller Sales Amount], [Date].[Calendar Year].[CY 2003]) ) ) ON ROWS FROM [Step-by-Step]
更多 BI 文章请参看 BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server) 如果觉得这篇文章看了对您有帮助,请帮助推荐,以方便他人在 BIWORK 博客推荐栏中快速看到这些文章。