我有一个具有不同视觉效果的仪表板。 数据由保险公司的不同值组成。 我希望切片器/过滤器不过滤所有数据,而只突出显示所选的公司。
例如,在我的切片机中,我选择了保险ABN。 我不希望仅在视觉效果中显示ABN的值,而是希望所有其他值仍然可见,而在视觉效果中突出显示ABN的值。
有人知道该怎么做吗?
答案 0 :(得分:4)
您可以使用conditional formatting来实现。假设我们将背景颜色更改为“突出显示”一行(准确地说是单元格)。
首先,我们需要一个切片器,它将 不 过滤数据。为此,我们可以复制源表,删除不必要的列,并确保源和副本之间没有任何关系。因此,如果我们有一个名为Table
的源表,如下所示:
右键单击它,然后选择Duplicate
:
然后右键单击要保留的列的标题,然后选择Remove Other Columns
仅获得公司名称列表(您也可以删除重复的名称,但这不是必需的)。然后在模型中删除两个表之间的关系:
现在,您可以放置一个表,该表显示数据源中的公司名称和销售,并在复制表中显示公司名称的切片器。此时,在切片器中选择值应该不会影响表。
现在,您需要捕获切片器的值并将其用于度量中,该度量将确定当前行是否应突出显示。您可以为此使用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
:
然后按规则设置格式,其中Measure> = 1像这样:
现在,当切片器中没有任何选择时,表中没有突出显示的行:
如果您选择一家公司,则该公司将突出显示:
如果选择了多个公司,它也可以工作:
答案 1 :(得分:0)
感谢安德烈(Andrey)的分步说明,该说明非常有用。我想提出一个进一步的问题,特别是有关下面的评论。
“您可以为此使用SELECTEDVALUE,但请注意,它将为您提供 仅在限幅器中选择一个值时,才设置该值。如果你想 支持多个公司的突出显示,它的功能更多 复杂。”
在我的模型中,我已将第三张表(表(3))链接到表(2),并且与表(2)具有多对一关系。因此,当我单击表(3)时,它将过滤表(2),用作表(1)的切片器。
在表(2)中仅过滤1个值时,它将有条件地格式化表(1)中的单元格。但是,当在表(2)中过滤了多个值时,条件格式将失败。
由于要避免在切片器(表(2))中手动选择多个值,我想知道SELECTEDVALUE是否存在一种解决方法,以便当我在表中过滤多个值时能够有条件地格式化(2)。