目标创建一个可以从超市-》门店-》商品-》销售的向下钻取的度量值
- 方法一:HASONEVALUE函数
average_all_1 =
switch(
true(),
HASONEVALUE(sales[销售代表]),
AVERAGEX(ALLSELECTED(sales[销售代表]),[sales]),
HASONEVALUE(sales[产品]),
AVERAGEX(ALLSELECTED(sales[产品]),[sales]),
HASONEVALUE(sales[门店]),
AVERAGEX(ALLSELECTED(sales[门店]),[sales]),
HASONEVALUE(sales[超市]),
averagex(ALLSELECTED(sales[超市]),[sales])
)
- 方法二:ISINCOPE函数
average_all_2 =
//使用这种方法,iscope必须线创建hierarchy,及继承关系,且需要按照从上到下的顺序
//表中拖入的是hierarchy的字段
SWITCH(
true(),
ISINSCOPE(sales[销售代表]),
averagex(all(sales[销售代表]),[sales]),
ISINSCOPE(sales[产品]),
averagex(all(sales[产品]),[sales]),
ISINSCOPE(sales[门店]),
averagex(all(sales[门店]),[sales]),
ISINSCOPE(sales[超市]),
averagex(all(sales[超市]),[sales])
)
结论:
- 两种方法都可以实现平均值的向下钻取,思路都是判断目前的分类选择属于哪一个分类,然后进行计算
- Allselected 与 All的区别在于,All更加直接的剔除所有外部筛选器的上下文筛选(作用与整个列或者表),而allselected是作用与被选中范围内的列或者表