ISINSCOPE函数
ISINSCOPE函数隶属于“信息”类函数,适用于层次结构中的计算。
用途:适用于计算分层占比。
语法
代码语言:txt复制DAX=
ISINSCOPE(<列>)
参数
列:只能是现有列,不能是表达式。
返回结果
TRUE或者FALSE
例子
模拟数据:
这是白茶随机模拟的一份数据,一份销售明细,一份产品表。
将其导入到PowerBI中,模型关系如下:
例子1:对比ISFILTERED函数
代码1:
代码语言:txt复制ISFILTERED =
ISFILTERED ( '产品表'[商品分类] )
代码2:
代码语言:txt复制ISINSCOPE =
ISINSCOPE ( '产品表'[商品分类] )
结果:
从这个图中,我们看不出来什么区别,点击切片器。
可以看得出来,当我们进行筛选时,ISFILTERED函数的总计栏显示TRUE,而ISINSCOPE的结果依然是FALSE。
ISFILTERED函数与ISINSCOPE函数非常的类似,但是后者相对于前者多一层运算判断。 前者在上图中受到筛选器影响,结果产生变动;而后者考虑总计栏未出现商品分类,因此结果不受影响。 这是二者之间的区别,因此计算层级占比的时候,我们可以使用后者。
例子2:计算层级占比
有时候,我们需要知道每个分类下单个产品的占比,例如下图。
但是每个类别的占比其实我们也是需要知道的,那么这种情况就可以使用ISINSCOPE函数进行计算。
输入代码:
代码语言:txt复制ISINSCOPE例子 =
SWITCH (
TRUE (),
ISINSCOPE ( '销售明细'[商品名称] ), DIVIDE ( [销售数量], CALCULATE ( [销售数量], ALLSELECTED ( '销售明细'[商品名称] ) ) ),
IF (
ISINSCOPE ( '产品表'[商品分类] ),
DIVIDE ( [销售数量], CALCULATE ( [销售数量], ALLSELECTED ( '产品表'[商品分类] ) ) ),
1
)
)
结果如下:
解释: 首先是利用ISINSCOPE进行第一层级的判断,如果是靠枕、腰带这类的具体商品,则进行占比计算; 然后对层级进行判断,如果是床品、男装这种类别的层级,则进行类别占比计算; 最后,白茶偷懒了,因为考虑到无论怎么筛选,我们所要呈现的总计栏都是100%,因此直接懒得计算了,输入1就OK了。
传送门丨《利用CALCULATE函数求各类占比》
小伙伴们❤GET了么?
白茶会不定期的分享一些函数卡片
(文件在知识星球PowerBI丨需求圈)
这里是白茶,一个PowerBI的初学者。