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

问题描述 投票:0回答:2

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

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

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

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的等级。

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

powerpivot dax rank
2个回答
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('表'[Sales]))表示按销售总额排名。 CALCULATE包装很重要;普通SUM('Table'[Sales])将被过滤到当前行上下文,导致每个州排名为#1。 (或者,您可以将SUM('Table'[Sales])分拆为单独的Sales度量 - 我建议这样做。)

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

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

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.