在我们生成的许多报告中,我们经常需要一种方法来对数据进行评分或排名。例如,我们可能需要列出销售团队的销售总额,并将它们从最高销售额到最低销售额进行排名。排名可以作为计算列或度量值来完成。使用度量值时,排名将变为动态,并采用显示数据的表或视觉对象的筛选器上下文。
如果您希望允许用户选择不同的分类值(如产品类型),然后让报表自动对所选项目进行排名,则将排名计算为度量值可能很有用。当报表筛选器上下文更改时,将自动对项目进行重新排名。
好了,让我们进入数据!
打开 Power BI Desktop,使用我们的演示数据表“服装销售额”加载到数据模型中。
要了解排名的工作原理,我们必须首先了解 DAX 函数 ALLSELECTED。
为了说明 ALLSELECTED() 函数的工作原理,我们将进行两个度量并将它们放在一个简单的表中。
首先,在服装销售额表中创建销售额的总和。单击“主页”功能区上的“新建度量”。
输入以下度量公式:
总销售额 = SUM('服装销售额'[销售额])
现在,使用下图中所示的选定列创建一个Table视觉对象。
我们可以看到所有种类的项目都已加在一起形成总数。为“种类”列添加切片器视觉对象,请参阅下面的示例。
添加切片器后,我们可以选择各种项目并正确查看表筛选器。
备注:如果要在切片器中选择多个项目,请按住 按Ctrl键并单击要选择的多个项目。这就是我选择上图中多个项目的方式。
现在,让我们做一个执行相同计算的度量,但这次我们将应用 ALLSELECTED() DAX 函数。单击“主页”功能区上的“新建度量”,然后输入以下 DAX 公式。
销售额(筛选器上下文) = CALCULATE(SUM('服装销售额'[销售额]),ALLSELECTED('服装销售额'))
将此新度量添加到现有表中。
在这个新公式中,我们正在计算所有服装销售的总和,但使用从我们的过滤器中选择的所有商品的过滤器上下文。请注意,在我们的切片器中未选择任何内容,对于表中“销售额(筛选器上下文)”列的每一行,所有 总销售额 的总和是相同的。这是因为我们更改了总和计算的筛选器上下文。
从切片器中选择牛仔裤和裤子。请注意,我们的结果相同,但总数不同。使用 ALLSELECTED 计算的总额忽略了牛仔裤和裤子的筛选器上下文,并计算了所有选定销售额的总和。
最后,我们现在将添加排名。为了计算排名,我们使用 DAX 函数 RANKX()。
创建一个新度量值并添加以下内容:
排名=RANKX(ALLSELECTED('服装销售额'[种类]),CALCULATE(SUM('服装销售额'[销售额])))
将新度量值 “排名”添加到表视觉对象,基于从切片器视觉对象中选择的信息进行自动排名。
注意:当我们使用 RANKX 函数时,我们从"服装销售额"表中调用了一个特定的列,即 "种类"列。如果仅指定表名,则此度量值将不起作用。我们使用类别的过滤上下文来执行排名操作。
领取专属 10元无门槛券
私享最新 技术干货