如何通过DAX度量捕获切片器值

时间:2018-06-19 13:05:58

标签: powerbi dax

如何在所有情况下都通过DAX度量捕获限幅器值?让我们来看看示例数据:

+-----------+---------+-------+
| category  | species | units |
+-----------+---------+-------+
| fruit     | apple   |     1 |
| fruit     | banana  |     1 |
| vegetable | carrot  |     1 |
| vegetable | potato  |     1 |
+-----------+---------+-------+

我添加了两个措施:

措施1:

species selected = SELECTEDVALUE(Table1[species])

措施2:

IsFiltered = ISFILTERED(Table1[species])

情况1.选中两个切片器中的所有项目。 enter image description here

情况2。(有问题的情况)。选择了水果胡萝卜(当我们取消切片器的交互作用时可能)。 enter image description here

如果我们从一个切片机中选择水果类别,而从另一个切片机中选择胡萝卜,则会出现问题。这组项目显然是空的。但是,肯定已从物种中选择了胡萝卜,并且已通过IsFiltered度量将其确认为真。有没有办法在DAX度量中捕获该值?

1 个答案:

答案 0 :(得分:1)

由于categoryspecies切片器均来自同一表的列,因此,如果同时选择了fruitcarrot,则结果表为空且因此,任何措施(除去两个过滤器的措施除外)都将与空白配合使用。您不能同时使用两个滤镜并期望它们独立运行(即使两个切片器的视觉效果没有交叉滤镜)。

如果您不希望species selected的度量受到category的影响,最简单的方法是关闭{{1}中的过滤(在“格式”>“编辑交互”下) }切片器包含category的视觉对象。

这并不总是您想要的,因此另一种可能性是为species selected切片器创建一个新表,该表没有来自species的过滤关系。如果需要的话,这将允许您分别使用切片器选项。 (在我希望切片器表现得更像参数而不是过滤器之前,我绝对必须这样做。)


编辑:要执行我的建议,请在查询编辑器中创建一个引用Table1的新Table2,删除除Table1以外的所有列,然后删除必要时重复。现在,您应该具有一个包含唯一物种列表的单列表。

关闭并应用时,Power BI可能会自动在两个表之间创建一个关系,但是您需要确保它正是您想要的。单个过滤器方向必须是多对一的关系。

Table Relationship

完成此操作后,您需要将species切片器替换为Table1[species]切片器,并在必要时更改度量中的引用。