Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssas MDX-每个子群的前N个元素_Ssas_Mdx_Mdx Query - Fatal编程技术网

Ssas MDX-每个子群的前N个元素

Ssas MDX-每个子群的前N个元素,ssas,mdx,mdx-query,Ssas,Mdx,Mdx Query,假设我有一个包含销售事实表和3个维度的多维数据集:时间(具有层次结构的年-月-日)、地理位置(具有层次结构的大陆-国家/地区)和具有所售产品某些特征的产品,让我们以品牌为例 我想做的是显示与所选指标相关的前N个品牌,在这种情况下,每个地区和月份的平均销售额(已经作为总销售额/销售产品数量出现在立方体中) 为了清晰起见,我还需要显示国家和年份 我到处都在寻找解决这个问题的方法,我很接近它,但不是完全。我希望有人能帮我弄明白 因此,我在下面的查询中使用了generate和topcount,但问题是t

假设我有一个包含销售事实表和3个维度的多维数据集:时间(具有层次结构的年-月-日)、地理位置(具有层次结构的大陆-国家/地区)和具有所售产品某些特征的产品,让我们以品牌为例

我想做的是显示与所选指标相关的前N个品牌,在这种情况下,每个地区和月份的平均销售额(已经作为总销售额/销售产品数量出现在立方体中)

为了清晰起见,我还需要显示国家和年份

我到处都在寻找解决这个问题的方法,我很接近它,但不是完全。我希望有人能帮我弄明白

因此,我在下面的查询中使用了generate和topcount,但问题是topcount计算了整个数据集的N个畅销品牌,而不是每个地区和月份子组。然后将这个前N应用于每个子组

WITH SET [Top N Brands] AS
    Generate([Geography].[Region].Children,
    TopCount(Geography].[Region].CurrentMember * [Gpu Product].[Brand].[Brand].MEMBERS,
            5, ([Measures].[averageSales])))
SELECT {[Measures].[averageSales]} ON COLUMNS,
    NON EMPTY ( [Time].[Year].[Year],
                [Time].[Month].[Month],
                [Geography].[Country].[Country],
                [Top N Brands])  ON ROWS
FROM [Cube]
所以我得到了这个,全球前5大品牌分布在各个地区,如果在那里销售:

但我应该为每个地区提供不同的前5名:


我缺少什么?

您需要使用rank。看看下面的例子。我使用的是Adventure Works Db示例,在这里我列出了每个国家,每个国家的产品类别,根据互联网销售额排名前三位的子类别

WITH 
MEMBER [Measures].[Internet Sales Amount Rank] AS
RANK( ([Customer].[Country].currentmember,[Product].[Category].currentmember,[Product].[Subcategory].CurrentMember),
ORDER( ([Customer].[Country].currentmember,[Product].[Category].currentmember,[Product].[Subcategory].[Subcategory].Members) , [Measures].[Internet Sales Amount], BDESC)
) 

select 
non empty 
([Measures].[Internet Sales Amount])
on columns
,
non empty
([Customer].[Country].[Country],
[Product].[Category].[Category],
filter([Product].[Subcategory].[Subcategory],[Measures].[Internet Sales Amount Rank]<4))

on rows 
from [Adventure Works]
与
成员[测量][互联网销售额排名]为
排名(([Customer].[Country].currentmember,[Product].[Category].currentmember,[Product].[Subcategory].currentmember),
订单(([Customer].[Country].currentmember,[Product].[Category].currentmember,[Product].[Subcategory].[Subcategory].Members),[Measures].[Internet销售额],BDESC)
) 
挑选
非空
([措施][互联网销售额])
柱上
,
非空
(【客户】【国家】【国家】,
[产品][类别][类别],
过滤器([产品].[子类别].[子类别],[度量值].[互联网销售额排名]