使用切片器 Power BI 突出显示
Highlighting with slicer Power BI
我有一个具有不同视觉效果的仪表板。
数据由保险公司的不同值组成。
我希望我的 slicers/filters 不过滤所有数据,而是仅突出显示所选公司。
例如,在我的切片器中,我选择保险 ABN。
我不想只在视觉效果中向我展示 ABN 的价值,我希望所有其他值仍然可见,并且 ABN 的价值在视觉效果中突出显示。
有人知道怎么做吗?
您可以使用 conditional formatting 来实现。假设我们将背景颜色更改为 "highlight" 一行(准确地说是单元格)。
首先,我们需要一个切片器,它将而不是过滤我们的数据。我们可以通过复制源 table、删除不必要的列并确保源和副本之间没有关系来做到这一点。因此,如果我们有一个源 table,名为 Table
,如下所示:
右击它 select Duplicate
:
然后右键单击要保留的列的标题,然后 select Remove Other Columns
仅获取公司名称列表(您也可以删除重复项,但这不是必需的)。然后在模型中删除 tables:
之间的关系
现在您可以放置一个 table 来显示您数据源中的公司名称和销售额,以及一个来自副本 table 的公司名称切片器。此时 selecting 切片器中的值不应影响 table.
现在您需要捕获切片器的值并将其用于度量,这将确定是否突出显示当前行。您可以为此使用 SELECTEDVALUE,但请注意,只有当切片器中有一个 selected 时,它才会给您一个值。如果你想支持超过一家公司的高亮显示,那就有点复杂了。
在源 table 中进行新测量,如下所示:
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))
如果切片器中只有一个值 selected(参见 HASONEVALUE),那么我们的度量将 return 1(突出显示)或 0(不显示) , 将其与当前行进行比较。
否则(即切片器中没有selection,或者有2个或更多公司selected),那么我们将查看过滤后的公司列表(Table (2)
) - 如果它包含当前行,则为 1(突出显示),否则为 0(不突出显示)。但我们也会处理切片器中没有值 selected 的情况。在这种情况下,列表将包含所有公司,即所有行都将突出显示。 ISFILTERED 来了。最后,如果列表被过滤并且当前行存在于过滤列表中,则为 1(高亮),否则为 0(不高亮)。
现在,您需要使用此措施来更改列的背景 - 右键单击 table 和 select Conditional formatting
-> Background color
中的每一列:
然后按规则格式化,其中 Measure >= 1 像这样:
现在,当切片器中没有 selection 时,table 中没有突出显示的行:
如果您select一家公司,则突出显示:
如果有多个公司,它也有效 select编辑:
感谢 Andrey 的逐步解释,这非常有帮助。我想跟进一个进一步的问题,特别是关于下面的评论。
"You can use SELECTEDVALUE for that, but note that it will give you a
value only if there is a one selected in the slicer. If you want to
support highlighting of more than one company, it gets a bit more
complicated."
在我的模型中,我将第三个 table (Table (3)) 链接到 Table (2) 与 [=20= 的多对一关系] (2).因此,当我单击 Table (3) 时,它将过滤 Table (2),它充当 Table (1) 的切片器。
当Table(2)中只过滤了1个值时,它有条件地格式化Table(1)中的单元格。但是,当在Table(2)中筛选出超过1个值时,条件格式化失败。
因为我希望避免在切片器中手动选择多个值 (Table (2)),所以我想知道是否有 SELECTEDVALUE 的解决方法,以便它能够在我过滤时有条件地格式化Table (2) 中的值超过 1 个。
我有一个具有不同视觉效果的仪表板。 数据由保险公司的不同值组成。 我希望我的 slicers/filters 不过滤所有数据,而是仅突出显示所选公司。
例如,在我的切片器中,我选择保险 ABN。 我不想只在视觉效果中向我展示 ABN 的价值,我希望所有其他值仍然可见,并且 ABN 的价值在视觉效果中突出显示。
有人知道怎么做吗?
您可以使用 conditional formatting 来实现。假设我们将背景颜色更改为 "highlight" 一行(准确地说是单元格)。
首先,我们需要一个切片器,它将而不是过滤我们的数据。我们可以通过复制源 table、删除不必要的列并确保源和副本之间没有关系来做到这一点。因此,如果我们有一个源 table,名为 Table
,如下所示:
右击它 select Duplicate
:
然后右键单击要保留的列的标题,然后 select Remove Other Columns
仅获取公司名称列表(您也可以删除重复项,但这不是必需的)。然后在模型中删除 tables:
现在您可以放置一个 table 来显示您数据源中的公司名称和销售额,以及一个来自副本 table 的公司名称切片器。此时 selecting 切片器中的值不应影响 table.
现在您需要捕获切片器的值并将其用于度量,这将确定是否突出显示当前行。您可以为此使用 SELECTEDVALUE,但请注意,只有当切片器中有一个 selected 时,它才会给您一个值。如果你想支持超过一家公司的高亮显示,那就有点复杂了。
在源 table 中进行新测量,如下所示:
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))
如果切片器中只有一个值 selected(参见 HASONEVALUE),那么我们的度量将 return 1(突出显示)或 0(不显示) , 将其与当前行进行比较。
否则(即切片器中没有selection,或者有2个或更多公司selected),那么我们将查看过滤后的公司列表(Table (2)
) - 如果它包含当前行,则为 1(突出显示),否则为 0(不突出显示)。但我们也会处理切片器中没有值 selected 的情况。在这种情况下,列表将包含所有公司,即所有行都将突出显示。 ISFILTERED 来了。最后,如果列表被过滤并且当前行存在于过滤列表中,则为 1(高亮),否则为 0(不高亮)。
现在,您需要使用此措施来更改列的背景 - 右键单击 table 和 select Conditional formatting
-> Background color
中的每一列:
然后按规则格式化,其中 Measure >= 1 像这样:
现在,当切片器中没有 selection 时,table 中没有突出显示的行:
如果您select一家公司,则突出显示:
如果有多个公司,它也有效 select编辑:
感谢 Andrey 的逐步解释,这非常有帮助。我想跟进一个进一步的问题,特别是关于下面的评论。
"You can use SELECTEDVALUE for that, but note that it will give you a value only if there is a one selected in the slicer. If you want to support highlighting of more than one company, it gets a bit more complicated."
在我的模型中,我将第三个 table (Table (3)) 链接到 Table (2) 与 [=20= 的多对一关系] (2).因此,当我单击 Table (3) 时,它将过滤 Table (2),它充当 Table (1) 的切片器。
当Table(2)中只过滤了1个值时,它有条件地格式化Table(1)中的单元格。但是,当在Table(2)中筛选出超过1个值时,条件格式化失败。
因为我希望避免在切片器中手动选择多个值 (Table (2)),所以我想知道是否有 SELECTEDVALUE 的解决方法,以便它能够在我过滤时有条件地格式化Table (2) 中的值超过 1 个。