在powerBI中创建不受视觉过滤器影响的countif度量

时间:2021-07-15 18:22:37

标签: powerbi dax

需要帮助创建度量以反映过滤时表中的实际行数。

示例:

<头>
ID RankC RankA 平均差异 RankC_count RankA_count 平均差异计数
1000 AAA XYZ +01.00 到 +01.25 5 6 4
1001 AAA ZY1 +01.5.00 到 +01.75 5 1 5
1002 AAB XYZ +01.5.00 到 +01.75 3 6 5
1003 AAB ZY2 +01.5.00 到 +01.75 3 1 5
1004 AAB XYZ +01.00 到 +01.25 3 6 4
1005 AAA XYZ +01.00 到 +01.25 5 6 4
1006 AAA ZY3 +01.00 到 +01.25 5 1 4
1007 AAC XYZ +01.25.00 至 +01.5 1 6 2
1008 AAA ZY4 +01.25.00 至 +01.5 5 2 2
1009 AAZ ZY4 +01.5.00 到 +01.75 1 2 5
1010 ABY XYZ +01.5.00 到 +01.75 1 6 5

最后 3 列代表每个条目的计数。如果我使用如下度量,它会提供正确的计数。但是,当我在视觉对象中使用时,按 ID 过滤,例如 ID 1000,我希望它显示第 1 行,计数为 5,6 和 4,而不是全部为 1。

问题:

  1. 是否有任何措施可以给我正确的结果?说先汇总表格然后再查找?
  2. 创建列是唯一的选择吗?我无法创建列,因为我需要 1000 个这些计算列。而使用 measure,我可以一次性创建 1000 个。

感谢您的帮助。

AverageDiff_Count =
CALCULATE (
    COUNTROWS (
        FILTER ( '28Jun_1973', [Average Diff] = '28Jun_1973'[Average Diff] )
    )
)

1 个答案:

答案 0 :(得分:0)

ALL 函数在这里很有用。它移除过滤器上下文,以便它使用整个表,而不仅仅是当前过滤器上下文中的部分。

AvgDiff_Count =
VAR CurrAvgDiff = SELECTEDVALUE ( '28Jun_1973'[Avg Diff] )
RETURN
    COUNTROWS (
        FILTER ( ALL ( '28Jun_1973' ), '28Jun_1973'[Avg Diff] = CurrAvgDiff )
    )