在 powerBI 中创建一个不受过滤器影响的 countif 度量
create a countif measure not impacted by filter in visual in powerBI
需要帮助创建反映筛选时 table 中实际行数的度量。
示例:
ID
排名C
A级
平均差异
RankC_count
RankA_count
平均Diff_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.
问题:
- 有什么措施可以给我正确的结果吗?说先总结 table 然后做查找?
- 创建专栏是唯一的选择吗?我无法创建列,因为我需要 1000 个这些计算列。而使用measure,我可以一次创建1000个。
感谢您的帮助。
AverageDiff_Count =
CALCULATE (
COUNTROWS (
FILTER ( '28Jun_1973', [Average Diff] = '28Jun_1973'[Average Diff] )
)
)
ALL函数在这里很有用。它删除过滤器上下文,以便它使用整个 table 而不是当前过滤器上下文中的部分。
AvgDiff_Count =
VAR CurrAvgDiff = SELECTEDVALUE ( '28Jun_1973'[Avg Diff] )
RETURN
COUNTROWS (
FILTER ( ALL ( '28Jun_1973' ), '28Jun_1973'[Avg Diff] = CurrAvgDiff )
)
需要帮助创建反映筛选时 table 中实际行数的度量。
示例:
ID | 排名C | A级 | 平均差异 | RankC_count | RankA_count | 平均Diff_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.
问题:
- 有什么措施可以给我正确的结果吗?说先总结 table 然后做查找?
- 创建专栏是唯一的选择吗?我无法创建列,因为我需要 1000 个这些计算列。而使用measure,我可以一次创建1000个。
感谢您的帮助。
AverageDiff_Count =
CALCULATE (
COUNTROWS (
FILTER ( '28Jun_1973', [Average Diff] = '28Jun_1973'[Average Diff] )
)
)
ALL函数在这里很有用。它删除过滤器上下文,以便它使用整个 table 而不是当前过滤器上下文中的部分。
AvgDiff_Count =
VAR CurrAvgDiff = SELECTEDVALUE ( '28Jun_1973'[Avg Diff] )
RETURN
COUNTROWS (
FILTER ( ALL ( '28Jun_1973' ), '28Jun_1973'[Avg Diff] = CurrAvgDiff )
)