如何创建按选择器和切片器过滤的总计?

时间:2018-11-18 15:32:55

标签: powerbi dax

问题

我想创建一个多层直方图,以显示第一级上的var1和第二级上的var2的分布,并带有source的图例,像这样:

enter image description here

该值应显示w.r.t. source的总数,并应用了所有选择和切片器。直方图中显示的百分比应始终为source的100%。

示例数据

我有以下示例数据:

source  var1    var2    count
A       1       1       100
A       1       2       12
A       1       3       34
A       2       1       1612
A       2       2       23
A       2       3       43
B       1       1       200
B       1       2       320
B       1       3       12
B       2       1       1757
B       2       2       345
B       2       3       32

我尝试了什么

通过以下措施,我可以实现source的总计,没有过滤部分:

percPerSource = 
DIVIDE(
    SUM(input[count]); 
    CALCULATE(
        SUM(input[count]); 
        ALLEXCEPT(input;input[source])
        )
    )*100

enter image description here

如果我打开钻取模式并单击var1的列,则会得到以下不良结果(百分比之和不等于100%):

enter image description here

另一种尝试是使用ALLSELECTED函数:

percSelected = 
    DIVIDE(
        SUM(input[count]); 
        CALCULATE(
            SUM(input[count]); 
            ALLSELECTED(input[var1])
            )
        )*100

这仅显示var2级别的100%:

enter image description here

1 个答案:

答案 0 :(得分:4)

我认为这可以满足您的需求

percPerSource = 
DIVIDE(
    SUM(input[count]);
    CALCULATE(
        SUM(input[count]);
        FILTER(
            ALLSELECTED(input);
            input[Source] IN VALUES(input[Source])
        )
    )
)*100

这会将所有选定的值作为您要在其上进行过滤的Universe,但仅选择本地过滤器上下文中的行。

Drilldown


FILTER function将表作为第一个参数,将条件作为第二个参数。遍历传递给它的表中的每一行,并检查条件是否成立,并返回仅包含条件求值为True的行的表。

VALUES函数返回在本地过滤器上下文中评估的指定列的不同值的列表。