【发布时间】:2020-02-05 02:52:32
【问题描述】:
我有一个具有不同视觉效果的仪表板。 数据由保险公司的不同值组成。 我希望我的切片器/过滤器不过滤所有数据,而只突出显示所选公司。
例如,在我的切片器中,我选择了保险 ABN。 我不想只在我的视觉效果中显示 ABN 的值,而是希望所有其他值仍然可见,并且 ABN 的值在视觉效果中突出显示。
有人知道怎么做吗?
【问题讨论】:
我有一个具有不同视觉效果的仪表板。 数据由保险公司的不同值组成。 我希望我的切片器/过滤器不过滤所有数据,而只突出显示所选公司。
例如,在我的切片器中,我选择了保险 ABN。 我不想只在我的视觉效果中显示 ABN 的值,而是希望所有其他值仍然可见,并且 ABN 的值在视觉效果中突出显示。
有人知道怎么做吗?
【问题讨论】:
您可以使用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 像这样:
现在,当切片器中没有选择时,表格中没有突出显示的行:
如果您选择一家公司,则会突出显示:
如果选择了多家公司,它也可以:
【讨论】:
感谢 Andrey 的逐步解释,这非常有帮助。我想跟进一个进一步的问题,特别是关于下面的评论。
“您可以为此使用 SELECTEDVALUE,但请注意,它会给您一个 仅当在切片器中选择了一个时才取值。如果你想 支持多个公司的突出显示,它会得到更多 复杂。”
在我的模型中,我已将第三个表(表 (3))链接到表 (2),并且与表 (2) 具有多对一的关系。因此,当我单击表 (3) 时,它将过滤表 (2),它充当表 (1) 的切片器。
当在表 (2) 中仅过滤 1 个值时,它有条件地格式化表 (1) 中的单元格。但是,当在表 (2) 中筛选出超过 1 个值时,条件格式将失败。
由于我希望避免在切片器中手动选择多个值(表 (2)),我想知道是否有针对 SELECTEDVALUE 的解决方法,这样当我在表中过滤超过 1 个值时它能够有条件地格式化(2)。
【讨论】: