您好我是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实现这一目标?
答案 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]
答案 3 :(得分:-1)
在MDX中,如果要在同一轴上显示不同维度的成员,可以将它们放入元组中。类似的东西:
select ([Time].[Calendar].[Year], [Rate].[rating].children) on columns,
select ( ... , ... ) on rows
from [cube]
可能有助于解决您的问题。