DAX 公式根据条件计算为 COUNT() 或 DISCTINTCOUNT()?

DAX formula to COUNT() or DISCTINTCOUNT() based on condition?

我想在 Pivot Table 中包含一个使用 DAX 公式的新度量。我有以下 DAX 公式来计算 Column1

中的唯一值
= DISTINCTCOUNT(Table1[Column1])

如何计算等于 "XYZ" 的 COUNT() 值和不同于 "XYZ" 的 DISTINCTCOUNT() 值。我试过类似的方法,但没有用。

=IF(Table1[Column1] <> "XYZ",
     DISTINCTCOUNT(Table1[Column1]),
     COUNT(Table1[Column1])

样本输入

+----+---------+---------+
| Id | Column1 | Column2 |
+----+---------+---------+
| 1  | ABC     | A       |
+----+---------+---------+
| 1  | DEF     | A       |
+----+---------+---------+
| 1  | GHI     | B       |
+----+---------+---------+
| 1  | ABC     | A       |
+----+---------+---------+
| 1  | IIU     | XYZ     |
+----+---------+---------+
| 1  | HYW     | A       |
+----+---------+---------+
| 1  | ABC     | A       |
+----+---------+---------+
| 1  | ABC     | B       |
+----+---------+---------+
| 1  | WQW     | XYZ     |
+----+---------+---------+
| 1  | ABC     | A       |
+----+---------+---------+
| 1  | RTT     | XYZ     |
+----+---------+---------+
| 1  | PPO     | XYZ     |
+----+---------+---------+

我正在寻找的输出:

+----+---+---+-----+
| ID | A | B | XYZ |
+----+---+---+-----+
| 1  | 3 | 2 | 4   |
+----+---+---+-----+

输出 table 很有帮助。

我想你想要这样的东西:

IF (
    SELECTEDVALUE ( Table1[Column2] ) = "XYZ",
    COUNT ( Table1[Column2] ),
    DISTINCTCOUNT ( Table1[Column1] )
)

如果您的过滤器上下文中只有一个值,并且该值为 "XYZ",那么您计算 "XYZ" 的出现次数。否则,计算不同 Column1 值的数量。


如果使用不支持 SELECTEDVALUE 的旧版本,试试这个:

count =
IF (
    IF ( HASONEVALUE ( Table1[Column2] ), VALUES ( Table1[Column2] ) ) = "XYZ",
    COUNT ( Table1[Column2] ),
    DISTINCTCOUNT ( Table1[Column1] )
)