PowerPivot使用DAX排名组排名 - 使用字段总和进行排名

时间:2018-01-03 15:29:06

标签: powerpivot dax rank

我试图通过对每个组的字段(不是计算列)求和来对组进行排名,因此我得到了表格中每一行的静态答案。

例如,我可能有一个包含州,代理和销售的表。销售是一个领域,而不是衡量标准。一个州内可以有许多代理,因此每个州都有很多行。我试图按州内的总销售额对州进行排名。

我尝试了很多东西,但对我来说最有意义的是:

rankx(CALCULATETABLE(Table,allexcept(Table,Table[AGENT]),sum([Sales]),,DESC)

=rankx(SUMMARIZE(State,Table[State],"Sales",sum(Table[Sales])),[Sales])

第一个是创建一个表,在该表中,它可以在不按代理分组的情况下对销售额进行汇总。然后尝试根据它排名。我在这个上得到#ERROR。

第二个使用SUMMARIZE创建一个表,只有按州分组的Sales总和,然后尝试获取该表并根据Sales对状态进行排名。对于这一个,我每行得到1的等级。

我认为,但我不确定,我的问题来自销售是静态领域而不是计算的衡量标准。我无法弄清楚从哪里开始。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

假设您的数据看起来像这样......

Table with 3 columns: AGENT, STATE, Sales. There are 6 agents, 3 states and 18 rows (a value for each agent/state combination)

...你试过这个:

Ranking Measure = RANKX(ALL('Table'[STATE]),CALCULATE(SUM('Table'[Sales])))

ALL('表' [STATE])表示对所有州进行排名。 CALCULATE(SUM('表' [销售]))表示按销售总额排名。 CALCULATE包装很重要;一个简单的SUM('表' [Sales])将被过滤到当前行上下文,导致每个州排名#1。 (或者,您可以将SUM('表' [销售])分拆为单独的销售指标 - 我建议这样做。)

注意:排名将根据切片器/过滤器而改变(例如,按代理过滤器将按该代理重新排列状态)。如果您要按其总销售额(即不受代理商过滤器影响并始终查看整个表格)来查找状态的静态排名,请尝试以下操作:

Static Ranking Measure = CALCULATE([Ranking Measure], ALLEXCEPT('Table', 'Table'[State]))

这会采用相同的排名衡量标准,但会移除除状态过滤器之外的所有过滤器(您需要离开,因为这是您排名的列)。

答案 1 :(得分:0)

我确实找到了一个非常简单的解决方案,但它比我想要的更麻烦。如果它是唯一可行的,那没关系。

我创建了一个包含每个不同状态的新表以及一个销售总额,然后在该表上执行基本的RANKX。