使用SSAS和MDX在列和行上显示不同的维度

时间:2011-04-14 10:24:41

标签: ssas mdx

您好我是SSAS和MDX的新手,我需要根据OLAP多维数据集生成一个ssrs报告。 我无法弄清楚如何在列和行上显示不同的维度成员。 维度是列和客户端上的评级和时间,以及行上的状态,如下所示:

              | a rated | b rated  | c rated | Year-3 | Year-2 | Year-1 | Year* | Total|
good clients  |
medium clients|
bad clients   |
total clients |
status 1      |
status 2      |
status 3      |
total status  |
----------------------------------------------------------------------------------------

年份对应当前年份。

如何使用MDX实现这一目标?

4 个答案:

答案 0 :(得分:0)

MDX SELECT语句的轴是一组具有相同“维度”的元组。这意味着所有元组必须包含相同维度的成员。因此,当您请求时,您不能拥有由不同维度的成员(成员是元组)组成的MDX集。

话虽如此,我不明白:“评级和时间栏是独立的”。这究竟意味着什么?

答案 1 :(得分:0)

MDX查询最多可支持128个指定轴,但很少有MDX查询使用5个以上的轴。对于前5个轴,可以使用别名COLUMNS,ROWS,PAGES,SECTIONS和CHAPTERS。

尝试使用上述轴来实现您所期望的,例如查询两个不同的维度。

答案 2 :(得分:0)

以下查询可能适合您。您提到您的多维数据集中没有“所有”成员,因此您需要用各自的默认成员替换查询中的“所有”成员。我曾尝试在Adventure作品中制作类似的主题。这些单元具有internetSales数量

               | topSeller | Bottom Seller  | 2011| 2012 | 
Topcustomers   |
Bottomcustomers|
North America  |
Europe         |

//create 
//SET [Adventure Works].[TopCustomers] AS TopCount(([Customer].[Customer].Members,[Sales Territory].[Sales Territory Country].[All]), 3,[Measures].[Internet Sales Amount])
//SET [Adventure Works].[BottomCustomers] AS bottomCount(([Customer].[Customer].Members,[Sales Territory].[Sales Territory Country].[All]), 3,[Measures].[Internet Sales Amount])
//SET [Adventure Works].[NorthAmerica] AS ([Customer].[Customer].[All],{[Sales Territory].[Sales Territory Country].&[United States],[Sales Territory].[Sales Territory Country].&[Canada]})
//SET [Adventure Works].[Europe] AS ([Customer].[Customer].[All],{[Sales Territory].[Sales Territory Country].&[France],[Sales Territory].[Sales Territory Country].&[Germany],[Sales Territory].[Sales Territory Country].&[United Kingdom]})
//
//SET [Adventure Works].[TopSellers] AS TopCount(([Product].[Model Name].Members,[Date].[Calendar Year].[All]), 3,[Measures].[Internet Sales Amount])
//SET [Adventure Works].[BottomSellers] AS BottomCount(([Product].[Model Name].Members,[Date].[Calendar Year].[All]), 3,[Measures].[Internet Sales Amount])
//SET [Adventure Works].[2011] AS ([Product].[Model Name].[All],[Date].[Calendar Year].&[2011])
//SET [Adventure Works].[2012] AS ([Product].[Model Name].[All],[Date].[Calendar Year].&[2012])
//

select 
{
([Measures].[Internet Sales Amount],[TopSellers]),
([Measures].[Internet Sales Amount],[BottomSellers]),
([Measures].[Internet Sales Amount],[2011]),
([Measures].[Internet Sales Amount],[2012])
}
on columns,

{
([TopCustomers]),
([BottomCustomers]),
([NorthAmerica]),
([Europe])
}
on rows
from [Adventure Works]

结果如下所示 Result

答案 3 :(得分:-1)

在MDX中,如果要在同一轴上显示不同维度的成员,可以将它们放入元组中。类似的东西:

select  ([Time].[Calendar].[Year], [Rate].[rating].children) on columns,
select  ( ... , ... ) on rows
from [cube]

可能有助于解决您的问题。