在MDX中,如何基于TopCount过滤尺寸/轴

时间:2010-12-14 04:35:18

标签: ssas mdx

我有包含地理销售数据的多维数据集。我想根据来自任意已知商店的前5名卖家推销所有商店的商品销售(BTW这是真实问题的简化版本)。

在sql中(对我来说很遗憾)这将是

select StoreId, ProductId, Sales from cube where ProductId in 
    (select top 5 ProductId from cube where Store = @Store order by Sales desc)

2 个答案:

答案 0 :(得分:1)

您可以使用Topcount功能。如果您有名为Product and Store的维度和名为[Sales]的度量:

Select [Measures].[Sales] On Columns,
       CrossJoin([Store].Members,Generate(Topcount(Crossjoin({[Store].@[<StoreId>]},[Product].Members),5,[Measures].[Sales]),[Product].CurrentMember)) On Rows
  From [Yourcube]

替换&lt; StoreId&gt;使用您感兴趣的特定商店.Generate将遍历为特定商店找到的前5名,并仅返回产品成员。然后将此结果与所有商店交叉连接。

答案 1 :(得分:0)

这将在ROWS轴中为您的商店提取前5个产品,然后根据[Store]维度的defaultMember选择这些产品的[Sales]。如果[Store] defaultMember是可聚合层次结构的根,则应该给出所有商店中每个产品的销售额。

选择

[Measures]。[Sales] ON 0,

TopCount([Store]。[your-store] * [Product] .Members),5,[Measures]。[Sales])ON 1

FROM [你的立方体]