我有这两个表:
数据表......
ImaginaryData =
DATATABLE (
"Fruit", STRING,
"Colour", STRING,
"Amount", INTEGER,
{
{ "Apple", "Red", 10 },
{ "Apple", "Green", 5 },
{ "Pear", "Pink", 100 },
{ "Pear", "Blue", 65 },
{ "Orange", "Black", 12 },
{ "Orange", "White", 8 }
} )
查找表...
ImaginaryLookup =
DATATABLE (
"Fruit", STRING,
{
{ "Apple" },
{ "Pear" },
{ "Orange" }
} )
然后我创建了这个简单的1对多关系:
现在我想创建一个Percent of Total度量来添加到表中 - 但我希望总数的百分比基于在ImaginaryLookup的切片器中选择的果实总数:
这是我尝试过的:
%Total =
DIVIDE(
sum( ImaginaryData[Amount] ),
CALCULATE(
sum( ImaginaryData[Amount] ),
ALL(ImaginaryData)
)
)
如果在切片机中选择了所有水果,那么它可以正常工作,如我所料:
但如果我选择说“橙色”,那么结果就不是我想要的,因为我希望12和8是20的百分比:
这也没有给我我想要的东西:
%Total =
DIVIDE(
sum( ImaginaryData[Amount] ),
CALCULATE(
sum( ImaginaryData[Amount] ),
ALLEXCEPT(ImaginaryData, ImaginaryData[Fruit])
)
)
因为现在如果我选择说Pears和Oranges然后它给我百分比作为每个水果总数的百分比,而不是185的百分比:
给亚历克西斯留言
如果我试试这个:
%Total =
DIVIDE(
sum( ImaginaryData[Amount] ),
CALCULATE(
sum( ImaginaryData[Amount] ),
ALLSELECTED( ImaginaryData[Fruit])
)
)
我明白了:
ALL
函数删除所有过滤器上下文。请尝试使用ALLSELECTED
。这将保留切片器选择,同时删除表格可视化的过滤器上下文。
如果你使用它(注意我没有指定一列):
%Total =
DIVIDE(
SUM( ImaginaryData[Amount] ),
CALCULATE(
SUM( ImaginaryData[Amount] ),
ALLSELECTED( ImaginaryData )
)
)
然后你应该得到这个结果:
如果你做ALLSELECTED(ImaginaryData[Fruit])
它不起作用的原因是Colour
过滤器上下文仍然存在,所以你不要拿起其他水果,因为它们的颜色都不同于你正在评估的行。