Power BI 仪表板,核心过滤条件是数值字段的析取。

5
我们正在尝试实现一个仪表盘,其中显示各种表格、指标和地图,数据集是客户列表。主要筛选条件是两个数字字段的析取。我们希望用户能够选择[字段1][字段2]的阈值,并强制执行条件[字段1] >= <阈值> OR [字段2] >= <阈值>
之后,我们还想允许各种其他交互式切片器,以便用户可以进一步限制数据,例如按国家或账户经理筛选。
Power BI自然会在所有过滤器之间强制实施AND,并没有一个简洁的方式来指定OR。您能建议一种定义使用两个数字字段的计算方法(然后作为筛选器应用于同一交互式仪表板屏幕)的方法吗?或者,在显示主仪表板屏幕之前,是否有一种方法首先提示用户输入两个阈值,以便当他们在参数设置屏幕上单击提交时,就已经应用了析取? 根据评论添加: 数据可能非常简单:没有复杂性。复杂性在于使用户界面能够启用析取。
假设数据是客户列表,其中包括客户ID、国家、性别、最近12个月交易的总价值和最近12个月购买次数。我希望最终用户(没有技术技能)指定总价值的最低阈值(例如$1,000)和购买次数的最低阈值(例如10),然后将数据集限制为最近12个月交易的总价值>$1,000 OR 最近12个月购买次数>10的客户。
在这样做之后,我想允许用户在仪表板上查看数据集(例如,用表格和图形显示),并从那里选择其他筛选器(例如,性别=男性,国家=澳大利亚)。

2
你能提供一个小的数据示例吗? - user5226582
1
请查看帖子中添加的进一步说明 - MattClarke
1
到目前为止,已经有两个有用的答案。其中一个解释说,目前的用户界面不支持这种操作,但是有一个增强请求可以实现它。另一个描述了通过使用一些额外的参数表和过滤度量来实现目标的方法。非常感谢你们两个。在分配赏金之前,我将测试第二种方法。 - MattClarke
2个回答

4
据我所知,目前Power BI中没有内置的切片功能。但在Power BI论坛上,有一个建议要求增加类似于此的功能。点击这里查看。如果您愿意使用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

桌面表格:

这里您可以看到使用两个切片器的输入表格和子集表格。如果论坛建议得到实施,将很容易将子集更改为 "OR" 场景,如下所示:

enter image description here

使用 Power Query 进行交易金额 > 1000 或购买次数 > 10 的筛选:

如果您使用 编辑查询 > 高级筛选,则可以按如下方式设置:

enter image description here

然后在 应用的步骤 下,将包含此公式:

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

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

enter image description here

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

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


4
关键在于创建单独的参数表格,并使用度量值结合条件。
假设我们有以下“销售”表格:
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)

或者手动使用“输入数据”或其他方法来定义表格。

无论哪种情况,一旦您拥有这些表格,请将它们的列命名为您想要的内容(我使用了 MinNumberMinValue),然后编写您的过滤度量值。

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

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

如果您选择MinCount10MinValue1000,则您的表格应该如下所示:

Filtered

请注意,EG仅超过一个阈值,并且AD被排除在外。


我们现在已经实施了这种方法,它非常有效。谢谢Alexis。 - MattClarke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接