使用切片机Power BI突出显示

时间:2020-01-27 12:06:01

标签: filter powerbi highlight

我有一个具有不同视觉效果的仪表板。 数据由保险公司的不同值组成。 我希望切片器/过滤器不过滤所有数据,而只突出显示所选的公司。

例如,在我的切片机中,我选择了保险ABN。 我不希望仅在视觉效果中显示ABN的值,而是希望所有其他值仍然可见,而在视觉效果中突出显示ABN的值。

有人知道该怎么做吗?

2 个答案:

答案 0 :(得分:4)

您可以使用conditional formatting来实现。假设我们将背景颜色更改为“突出显示”一行(准确地说是单元格)。

首先,我们需要一个切片器,它将 过滤数据。为此,我们可以复制源表,删除不必要的列,并确保源和副本之间没有任何关系。因此,如果我们有一个名为Table的源表,如下所示:

enter image description here

右键单击它,然后选择Duplicate

enter image description here

然后右键单击要保留的列的标题,然后选择Remove Other Columns仅获得公司名称列表(您也可以删除重复的名称,但这不是必需的)。然后在模型中删除两个表之间的关系:

enter image description here

现在,您可以放置​​一个表,该表显示数据源中的公司名称和销售,并在复制表中显示公司名称的切片器。此时,在切片器中选择值应该不会影响表。

现在,您需要捕获切片器的值并将其用于度量中,该度量将确定当前行是否应突出显示。您可以为此使用SELECTEDVALUE,但请注意,只有在切片器中选择一个值时,它才会为您提供一个值。如果您想支持多个公司的突出显示,它会变得更加复杂。

在源表中进行新的度量,如下所示:

Measure = IF(HASONEVALUE('Table (2)'[Company name]);
    IF(SELECTEDVALUE('Table (2)'[Company name]) = MAX('Table'[Company name]); 1; 0);
    IF(ISFILTERED('Table (2)'[Company name]) && COUNTROWS(FILTER('Table (2)'; 'Table (2)'[Company name] = MAX('Table'[Company name]))); 1; 0))

如果在限幅器中仅选择了一个值(请参阅HASONEVALUE),则我们的度量将返回1(突出显示)或0(不显示),并将其与当前行进行比较。

否则(例如,切片器中没有选择项,或者选择了2个或更多公司),那么我们将查看过滤后的公司列表(Table (2))-如果包含当前行,则为1 (突出显示),否则为0(不显示)。但是,我们还将处理切片器中未选择任何值的情况。在这种情况下,列表将包含所有公司,即所有行都将突出显示。 ISFILTERED到了。最后,如果过滤了列表,并且过滤后的列表中存在当前行,则为1(突出显示),否则为0(不显示)。

现在,您需要使用此措施来更改列的背景-右键单击表格中的每一列,然后选择Conditional formatting-> Background color

enter image description here

然后按规则设置格式,其中Measure> = 1像这样:

enter image description here

现在,当切片器中没有任何选择时,表中没有突出显示的行:

enter image description here

如果您选择一家公司,则该公司将突出显示:

enter image description here

如果选择了多个公司,它也可以工作:

enter image description here

答案 1 :(得分:0)

感谢安德烈(Andrey)的分步说明,该说明非常有用。我想提出一个进一步的问题,特别是有关下面的评论。

“您可以为此使用SELECTEDVALUE,但请注意,它将为您提供 仅在限幅器中选择一个值时,才设置该值。如果你想 支持多个公司的突出显示,它的功能更多 复杂。”

在我的模型中,我已将第三张表(表(3))链接到表(2),并且与表(2)具有多对一关系。因此,当我单击表(3)时,它将过滤表(2),用作表(1)的切片器。

在表(2)中仅过滤1个值时,它将有条件地格式化表(1)中的单元格。但是,当在表(2)中过滤了多个值时,条件格式将失败。

由于要避免在切片器(表(2))中手动选择多个值,我想知道SELECTEDVALUE是否存在一种解决方法,以便当我在表中过滤多个值时能够有条件地格式化(2)。