Power BI仪表板,其中核心过滤条件与数字字段相分离

时间:2018-09-03 00:35:37

标签: powerbi

我们正在尝试实现一个仪表板,该仪表板显示各种表,指标和一张地图,其中数据集是客户列表。主要过滤条件是两个数字字段的和。我们希望用户能够为[field 1]选择一个阈值,为[field 2]选择一个单独的阈值,然后施加条件[field 1] >= <threshold> OR [field 2] >= <threshold>

此后,我们还希望允许其他各种交互式切片器,以便用户可以进一步限制数据,例如按国家或客户经理进行。

Power BI自然在所有过滤器之间强加AND,并且没有一种整洁的方式来指定OR。您能否建议一种使用两个数字字段定义计算的方法,然后将其用作同一交互式仪表板屏幕中的过滤器?另外,还有一种方法可以在显示仪表板之前先提示用户输入两个阈值-因此,当他们在该参数设置屏幕上单击Submit时,它们会被带到分离的主仪表板屏幕上已经申请了?

为回应评论而添加:

数据可能非常简单:没有复杂性。复杂之处在于让用户界面实现分离。

假设数据是客户列表,其中包含客户ID,国家/地区,性别,最近12个月内的交易总值以及最近12个月内的购买次数。我希望最终用户(没有任何技术技能)为总价值(例如$ 1,000)和购买次数(例如10)指定最低阈值,然后将数据集限制为最近12个月内交易总价值的数据> $ 1,000或最近12个月内的购买次数> 10。

这样做之后,我要允许用户在仪表板上查看数据集(例如,带有表格和图表),然后从中选择其他过滤器(例如,性别=男性,国家/地区=澳大利亚)。

2 个答案:

答案 0 :(得分:5)

据我所知,Power BI目前没有这种内置的切片器功能。但是Power BI forum中有一条建议,要求提供这样的功能。如果您愿意使用Power Query Editor,则很容易获得所需的值,但仅适用于极限值或阈值的硬编码值。

让我向您展示如何生成适合您描述结构的综合数据集:

数据集:

CustomerID,Country,Gender,TransactionValue12,NPurchases12
51,USA,M,3516,1
58,USA,M,3308,12
57,USA,M,7360,19
54,USA,M,2052,6
51,USA,M,4889,5
57,USA,M,4746,6
50,USA,M,3803,3
58,USA,M,4113,24
57,USA,M,7421,17
58,USA,M,1774,24
50,USA,F,8984,5
52,USA,F,1436,22
52,USA,F,2137,9
58,USA,F,9933,25
50,Canada,F,7050,16
56,Canada,F,7202,5
54,Canada,F,2096,19
59,Canada,F,4639,9
58,Canada,F,5724,25
56,Canada,F,4885,5
57,Canada,F,6212,4
54,Canada,F,5016,16
55,Canada,F,7340,21
60,Canada,F,7883,6
55,Canada,M,5884,12
60,UK,M,2328,12
52,UK,M,7826,1
58,UK,M,2542,11
56,UK,M,9304,3
54,UK,M,3685,16
58,UK,M,6440,16
50,UK,M,2469,13
57,UK,M,7827,6

桌面表格:

在这里,您将看到使用两个Slicer的Input表和一个子表。如果实施了论坛建议,则希望将如下所示的子集更改为"OR"方案应该很容易:

enter image description here

交易额> 1000 OR数量或使用Power Query购买次数> 10:

如果您使用Edit Queries > Advanced filter,则可以这样设置:

enter image description here

Applied Steps下的最后一步将包含以下公式:

= Table.SelectRows(#"Changed Type2", each [NPurchases12] > 10 or [TransactionValue12] > 1000

现在您的原始输入表将如下所示:

enter image description here

现在,如果仅能用动态值(例如,切片器中的值)替换硬编码的10和1000,那就好了!但是没有...

我知道这不是您想要的,但这是我能找到的最佳“否定答案”。我想我和您一样希望有更好的解决方案!

答案 1 :(得分:4)

这里的关键是创建单独的参数表并使用度量组合条件。

假设我们有以下Sales表:

Customer  Value  Number
-----------------------
A         568     2
B         2451   12
C         1352    9
D         876     6
E         993    11
F         2208   20
G         1612    4

然后,我们将创建两个新表用作参数。您可以做一个计算表,例如

Number = VALUES(Sales[Number])

或更复杂的东西

Value = GENERATESERIES(0, ROUNDUP(MAX(Sales[Value]),-2), ROUNDUP(MAX(Sales[Value]),-2)/10)

或使用Enter Data或其他方式手动定义表。

无论如何,一旦有了这些表,就可以根据需要命名它们的列(我使用了MinNumberMinValue)并编写了过滤指标

Filter = IF(MAX(Sales[Number]) > MIN(Number[MinCount]) ||
            MAX(Sales[Value])  > MIN('Value'[MinValue]),
            1, 0)

然后将Filter度量作为可视级别过滤器,其中Filter不是0,并使用MinCountMinValues列作为切片器。

如果您为MinCount选择10,为1000选择MinValue,则表应如下所示:

Filtered

请注意,EG仅超过阈值之一,并且排除了AD