我有包含地理销售数据的多维数据集。我想根据来自任意已知商店的前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)
答案 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 [你的立方体]