我想创建一个多层直方图,以显示第一级上的var1
和第二级上的var2
的分布,并带有source
的图例,像这样:
该值应显示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
如果我打开钻取模式并单击var1
的列,则会得到以下不良结果(百分比之和不等于100%):
另一种尝试是使用ALLSELECTED
函数:
percSelected =
DIVIDE(
SUM(input[count]);
CALCULATE(
SUM(input[count]);
ALLSELECTED(input[var1])
)
)*100
这仅显示var2
级别的100%:
答案 0 :(得分:4)
我认为这可以满足您的需求
percPerSource =
DIVIDE(
SUM(input[count]);
CALCULATE(
SUM(input[count]);
FILTER(
ALLSELECTED(input);
input[Source] IN VALUES(input[Source])
)
)
)*100
这会将所有选定的值作为您要在其上进行过滤的Universe,但仅选择本地过滤器上下文中的行。
FILTER
function将表作为第一个参数,将条件作为第二个参数。遍历传递给它的表中的每一行,并检查条件是否成立,并返回仅包含条件求值为True
的行的表。
VALUES
函数返回在本地过滤器上下文中评估的指定列的不同值的列表。