我创建了一个报告,其中我创建了一些措施,如 -
X =
CALCULATE (
DISTINCTCOUNT ( ActivityNew[Name] ),
FILTER (
ActivityNew,
ActivityNew[Resource Owner Name] = MAX ( 'Resource Owners'[Manager Name] )
&& ActivityNew[LocationId] = 2
)
)
当我在表中使用此度量时,列值不会加起来。例如。如果此度量的值为2,2,2,2,2则表中的总数应为10.但它显示为2.
我注意到无论我在哪里使用这个MAX(),测量值都没有加起来。
为什么会发生这种情况,他们的解决方案是什么?
答案 0 :(得分:3)
您使用的DISTINCTCOUNT
通常不可聚合。
假设您有以下表格Sales
:
+----------+------+-------+
| Customer | Item | Count |
+----------+------+-------+
| Albert | Coke | 3 |
| Bertram | Beer | 5 |
| Bertram | Coke | 2 |
| Charlie | Beer | 1 |
+----------+------+-------+
如果您想计算每个客户购买的不同商品的数量,您可以使用以下公式创建新的度量:
[Distinct Items] := DISTINCTCOUNT(Sales[Item])
如果您在报告中包含[Customer]
列和[Distinct Items]
指标,则会输出以下内容:
+----------+----------------+
| Customer | Distinct Items |
+----------+----------------+
| Albert | 1 |
| Bertram | 2 |
| Charlie | 1 |
+----------+----------------+
| Total | 2 |
+----------+----------------+
正如您所看到的,这并不总结,因为总行的上下文是整个表,未被任何特定客户过滤。要更改此行为,您必须明确告知您的度量它应该对客户级别派生的值求和。为此,use the SUMX
function。在我的例子中,度量公式应该像这样改变:
[Distinct Items] := SUMX(VALUES(Sales[Customer]), DISTINCTCOUNT(Sales[Item]))
由于我只想总结独特的客户,我使用VALUES(Sales[Customer])
。如果您想对表中的每一行求和,只需执行:SUMX(<table name>, <expression>)
。
通过此更改,上例中的输出将为:
+----------+----------------+
| Customer | Distinct Items |
+----------+----------------+
| Albert | 1 |
| Bertram | 2 |
| Charlie | 1 |
+----------+----------------+
| Total | 4 |
+----------+----------------+