Power BI DAX中窗口总数的百分比

时间:2018-09-18 19:03:10

标签: powerbi dax

我有这两个表:

数据表...

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" }
    } )

然后我创建了这种简单的一对多关系:

enter image description here

现在,我尝试创建要添加到表中的总计百分比的度量-但我希望总计百分比基于ImaginaryLookup切片器中选择的水果总数:

这是我尝试过的:

 %Total = 
DIVIDE(
    sum( ImaginaryData[Amount] ),
    CALCULATE(
        sum( ImaginaryData[Amount] ),
        ALL(ImaginaryData)
    )
)

如果在切片器中选择了所有水果,则可以正常工作:

enter image description here

但是,如果我选择说“ Orange”,那么结果就不是我想要的,因为我希望12和8占20的百分比:

enter image description here

这也没有给我我想要的东西

%Total = 
DIVIDE(
    sum( ImaginaryData[Amount] ),
    CALCULATE(
        sum( ImaginaryData[Amount] ),
        ALLEXCEPT(ImaginaryData, ImaginaryData[Fruit])
    )
)

因为现在,如果我选择说“梨和橙子”,那么它是给我的百分比是每种水果总数的百分比,而不是185的百分比:

enter image description here


给亚历克西斯的笔记

如果我尝试这样做:

%Total = 
DIVIDE(
    sum( ImaginaryData[Amount] ),
    CALCULATE(
        sum( ImaginaryData[Amount] ),
        ALLSELECTED( ImaginaryData[Fruit])
    )
)

我明白了:

enter image description here

2 个答案:

答案 0 :(得分:2)

ALL函数删除所有过滤器上下文。尝试使用ALLSELECTED来代替。这将保留您的切片器选择,同时删除表格视觉的过滤器上下文。

如果您使用此方法(请注意,我没有指定列):

%Total = 
    DIVIDE(
        SUM( ImaginaryData[Amount] ),
        CALCULATE(
            SUM( ImaginaryData[Amount] ),
            ALLSELECTED( ImaginaryData )
        )
    )

那么您应该得到以下结果:

% Total Measure

如果您执行ALLSELECTED(ImaginaryData[Fruit])则不起作用的原因是Colour过滤器上下文仍然存在,因此您不会拾取其他水果,因为这些水果的颜色都与行不同您正在评估。

答案 1 :(得分:1)

我使用了以下措施,它可以按预期工作:

function showPics() {
    document.querySelectorAll('.changeImages').forEach(val => {
      val.src = myPics[Number(Math.floor(Math.random() * myPics.length))];
    })   
}