我的数据包含重复(故意(,其中一个项目可能有多个类别。
我需要创建DAX度量值(最后一列(,该度量值仅在distCount(每个项目类别的不同计数(列等于1的情况下才会取值-distCount不在数据集中,应该作为度量值的一部分进行计算。
最后两列基本上是预期结果。例如,项目p2在整个数据集中只有1个类别(c1(,但例如,项目p5有3个唯一类别(c1、c4、c2(。[date]只是为了说明数据集可能要大得多(在列和行的数量上(。
+-----------+---------+----------+--------+-----------+---------+
| date | project | category | amount | distCount | measure |
+-----------+---------+----------+--------+-----------+---------+
| 4/12/2021 | p2 | c1 | 12.5 | 1 | 12.5 |
| 4/12/2021 | p3 | c1 | 7.5 | 1 | 7.5 |
| 4/12/2021 | p4 | c1 | 72.5 | 2 | 0 |
| 4/12/2021 | p4 | c4 | 72.5 | 2 | 0 |
| 4/12/2021 | p5 | c1 | 57 | 3 | 0 |
| 4/12/2021 | p5 | c4 | 57 | 3 | 0 |
| 4/12/2021 | p5 | c2 | 57 | 3 | 0 |
| 4/11/2021 | p2 | c1 | 15 | 1 | 15 |
| 4/11/2021 | p3 | c1 | 18 | 1 | 18 |
| 4/11/2021 | p4 | c1 | 72.5 | 2 | 0 |
| 4/11/2021 | p4 | c4 | 72.5 | 2 | 0 |
| 4/11/2021 | p5 | c1 | 67 | 3 | 0 |
| 4/11/2021 | p5 | c4 | 67 | 3 | 0 |
| 4/11/2021 | p5 | c2 | 67 | 3 | 0 |
+-----------+---------+----------+--------+-----------+---------+
我的尝试是完全错误的(请不要考虑(:
=IF(
CALCULATE(
COUNTROWS(data),
FILTER(data,
CONCATENATE(data[category],data[project])=
DISTINCT(CONCATENATE(data[category],data[project]))
))>1,SUM(0),SUM(data[amount]))
这个怎么样?
measure =
IF (
CALCULATE (
COUNTROWS ( data ),
ALLEXCEPT ( data, data[project], data[category] )
) = 1,
SUM ( data[amount] ),
0
)
这将对数据表中project
和category
与当前筛选器上下文匹配的行进行计数,并在该计数为单数时对amount
求和。