使用MDX从集合中获得最高结果

使用MDX从集合中获得最高结果,mdx,Mdx,我需要从多维数据集中得到每个州前50名卖家的名字 这就是我目前所拥有的 SELECT NON EMPTY ( [DimGeo].[State].[State].ALLMEMBERS * [Measures].[Total Sales]) ON COLUMNS, NON EMPTY TOPCOUNT([DimEmployee].[Employee ID].[EmployeeID].MEMBERS,50,[Measures].[Total Sales]) ON ROWS FROM Sales 但

我需要从多维数据集中得到每个州前50名卖家的名字

这就是我目前所拥有的

SELECT NON EMPTY ( [DimGeo].[State].[State].ALLMEMBERS *
[Measures].[Total Sales]) ON COLUMNS,
NON EMPTY TOPCOUNT([DimEmployee].[Employee ID].[EmployeeID].MEMBERS,50,[Measures].[Total  Sales]) ON ROWS
FROM Sales
但这只得到50个结果(即使一个州没有50个结果)。我想将状态结果限制为50个非空的最高值

示例:最终表格将有2500个结果(每50个州排名前50位的经销商)

我有没有办法做到这一点


谢谢,

通过将状态移动到行级别,这对您有用吗

SELECT NON EMPTY ( [Measures].[Total Sales]) ON COLUMNS,
NON EMPTY ([DimGeo].[State].[State].ALLMEMBERS  * TOPCOUNT([DimEmployee].[Employee ID].[EmployeeID].MEMBERS,50,[Measures].[Total  Sales])) ON ROWS
FROM fdmdw

通过将状态移动到行级别,这对您有用吗

SELECT NON EMPTY ( [Measures].[Total Sales]) ON COLUMNS,
NON EMPTY ([DimGeo].[State].[State].ALLMEMBERS  * TOPCOUNT([DimEmployee].[Employee ID].[EmployeeID].MEMBERS,50,[Measures].[Total  Sales])) ON ROWS
FROM fdmdw

我猜您正在寻找函数:

SELECT 
   NON EMPTY ( [Measures].[Total Sales]) ON COLUMNS, 
   NON EMPTY Generate( [DimGeo].[State].[State].ALLMEMBERS as s,
             TOPCOUNT(s.currentMember * [DimEmployee].[Employee ID].[EmployeeID].MEMBERS, 50, [Measures].[Total  Sales] )) 
ON ROWS FROM fdmdw

我猜您正在寻找函数:

SELECT 
   NON EMPTY ( [Measures].[Total Sales]) ON COLUMNS, 
   NON EMPTY Generate( [DimGeo].[State].[State].ALLMEMBERS as s,
             TOPCOUNT(s.currentMember * [DimEmployee].[Employee ID].[EmployeeID].MEMBERS, 50, [Measures].[Total  Sales] )) 
ON ROWS FROM fdmdw

我以前试过这个,但它只是让我在所有州中排名前50名,而不是每个州的前50名。我以前试过这个,但它只是让我在所有州中排名前50名,而不是每个州的前50名。这正是我要找的,这对我帮助很大!这正是我要找的,这对我帮助很大!