Power BI DAX 度量:考虑视觉对象的筛选上下文,计算列中某个值的出现次数

Power BI DAX measure: Count occurences of a value in a column considering the filter context of the visual

我想计算列中值的出现次数。在我的例子中,我想要计算的值是 TRUE()。 假设我的 table 被称为 Table 并且有两列:

boolean value
TRUE()  A
FALSE() B
TRUE()  A
TRUE()  B

到目前为止我找到的所有解决方案都是这样的:

count_true = COUNTROWS(FILTER(Table, Table[boolean] = TRUE()))

问题是我仍然希望显示度量的视觉对象(卡片)考虑过滤器(来自切片器)以减少 table。因此,如果我有一个设置为 value = A 的切片器,带有 count_true 度量的卡片应该显示 2 而不是 3。

据我了解,FILTER 函数总是会覆盖视觉过滤器上下文。

为了进一步解释我的意图:在较早的时候,TRUE/FALSE 列的值为 1/0,我可以通过使用 SUM 函数来实现我的目标,该函数没有指定筛选器上下文,只是执行在视觉过滤器上下文中。

我不确定这是否能解决您的问题,但我认为它更有效:

count_true = 计算(计数器(Table),Table[布尔值])

如果在将度量更改为使用此格式后问题仍然存在,则模型可能存在潜在问题。还有一个功能 KEEPFILTERS 可能适用于此,但我认为使用 KEEPFILTERS 会使您的情况过于复杂。

我认为你提供的 DAX 应该可以工作,只要它是一个度量,而不是一个计算列。 (计算列无法从报表中读取过滤器上下文。)

评估措施时,

count_true = COUNTROWS ( FILTER ( Table, Table[boolean] = TRUE() ) )

FILTER 中的第一个参数不一定是完整的 table,但 table 已经被本地过滤器上下文过滤(包括 report/page/visual 过滤器和切片器 select来自例如 rows/column 矩阵视觉的离子和本地上下文)。

因此,如果您通过切片器 select Value = "A",则 FILTER 中的 table 已过滤为仅包含 "A" 个值。