Ssas 如何为每个部门选择按金额递减排列的前25名客户?
我希望前25名客户按金额递减排序,针对每个部门,如:Ssas 如何为每个部门选择按金额递减排列的前25名客户?,ssas,mdx,cube,olap-cube,Ssas,Mdx,Cube,Olap Cube,我希望前25名客户按金额递减排序,针对每个部门,如: Dept|Customer|Amt 1 cust_1 5000 cust_2 2000 . . . 2 cust_26 6000 cust_27 3000 . . 3 . . 7 到目前为止,我尝试的是: SELECT NON EMPTY { [Measures].[Amount] }
Dept|Customer|Amt
1 cust_1 5000
cust_2 2000
.
.
.
2 cust_26 6000
cust_27 3000
.
.
3
.
.
7
到目前为止,我尝试的是:
SELECT
NON EMPTY { [Measures].[Amount] } ON COLUMNS ,
NON EMPTY {
[Customer].[DEPT].[DEPT]*
ORDER(
TOPCOUNT([Customer].[Customer].[Customer],25,[Measures].[Amount]),
[Measures].[Amount], DESC)
}
FROM [cube]
我得到了结果,但不是每个部门25个,尽管我有适当的数据。行交叉连接的第二项(
ORDER(TOPCOUNT(…))
)不知道第一项([Customer].[dept].[dept].[dept]
)。您应该为此使用,因为它在部门之间循环,从而允许您将当前部门放入TOPCOUNT
的第一个参数中:
SELECT
NON EMPTY { [Measures].[Amount] } ON COLUMNS ,
NON EMPTY
Generate([Customer].[DEPT].[DEPT],
TOPCOUNT({[Customer].[DEPT].CURRENTMEMBER}
*
[Customer].[Customer].[Customer],
25,
[Measures].[Amount]
)
)
FROM [cube]
还请注意,您不需要对
TOPCOUNT
降序的结果进行排序。Perfect。我同时也发现了同样的问题。谢谢也谢谢你的解释。