我正在使用《DAX权威指南》一书中提供的Contoso数据库学习DAX。
我试图理解过滤器上下文,我写了这个措施:
CountColor:= COUNT ( 'Product'[Color] )
我将其放入数据透视表中,其中'Product'[Color]被添加到rows部分,结果如下:
Row Labels | CountColor | Azure | 14 | 黑色
---|---|
602 | |
77 | |
… | … |
在本例中,VALUES获得一个不同的项列表,因此在下面:
CountColorValues:= CALCULATE (
COUNT ( 'Product'[Color] ),
FILTER ( 'Product',
'Product'[Color] = VALUES ( 'Product'[Color] )
)
)
'Product'[Color]试图等于一个包含{'Azure', 'Black', 'Blue'}的列表,所以实际上你试图使'Azure'的行等于一个包含不同值的表
要使其工作,需要将其更改为IN,是列表中的[color]值,而不是等于列表。
CountColorValues:= CALCULATE (
COUNT ( 'Product'[Color] ),
FILTER ( 'Product',
'Product'[Color] IN VALUES ( 'Product'[Color] )
)
)
这个问题应该是由Grand Total引起的。透视表的。这里的上下文是不同的,没有颜色过滤器存在,所以VALUES返回每个颜色,因此测量给出了提到的多行错误。
关闭数据透视表的汇总并不能解决问题,错误不断出现。
结论是,即使你愿意抑制它,你也必须把你的度量写得与总相容。