我有这两个表:
数据表...
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" }
} )
然后我创建了这种简单的一对多关系:
现在,我尝试创建要添加到表中的总计百分比的度量-但我希望总计百分比基于ImaginaryLookup切片器中选择的水果总数:
这是我尝试过的:
%Total =
DIVIDE(
sum( ImaginaryData[Amount] ),
CALCULATE(
sum( ImaginaryData[Amount] ),
ALL(ImaginaryData)
)
)
如果在切片器中选择了所有水果,则可以正常工作:
但是,如果我选择说“ Orange”,那么结果就不是我想要的,因为我希望12和8占20的百分比:
这也没有给我我想要的东西
%Total =
DIVIDE(
sum( ImaginaryData[Amount] ),
CALCULATE(
sum( ImaginaryData[Amount] ),
ALLEXCEPT(ImaginaryData, ImaginaryData[Fruit])
)
)
因为现在,如果我选择说“梨和橙子”,那么它是给我的百分比是每种水果总数的百分比,而不是185的百分比:
给亚历克西斯的笔记
如果我尝试这样做:
%Total =
DIVIDE(
sum( ImaginaryData[Amount] ),
CALCULATE(
sum( ImaginaryData[Amount] ),
ALLSELECTED( ImaginaryData[Fruit])
)
)
我明白了:
答案 0 :(得分:2)
ALL
函数删除所有过滤器上下文。尝试使用ALLSELECTED
来代替。这将保留您的切片器选择,同时删除表格视觉的过滤器上下文。
如果您使用此方法(请注意,我没有指定列):
%Total =
DIVIDE(
SUM( ImaginaryData[Amount] ),
CALCULATE(
SUM( ImaginaryData[Amount] ),
ALLSELECTED( ImaginaryData )
)
)
那么您应该得到以下结果:
如果您执行ALLSELECTED(ImaginaryData[Fruit])
则不起作用的原因是Colour
过滤器上下文仍然存在,因此您不会拾取其他水果,因为这些水果的颜色都与行不同您正在评估。
答案 1 :(得分:1)
我使用了以下措施,它可以按预期工作:
function showPics() {
document.querySelectorAll('.changeImages').forEach(val => {
val.src = myPics[Number(Math.floor(Math.random() * myPics.length))];
})
}