此文档为学习笔记,原课程为孙兴华老师的DAX课程,详见:https://www.bilibili.com/video/BV1YE411E7p3?p=11&spm_id_from=pageDriver&vd_source=b8364ea855575ea66b4a27d22ca3ae38
ALLSELECTED
作用:返回表中所有行或列的所有值,且保留外部筛选器
语法:allselected( 表 or 列 )
定义:表函数,通常用于计算占比:子类是按(外部筛选)总量来计算百分比
如果说all表
或all列
是通过all
忽略指定表或列的筛选器,那么allselected
则保留了外部筛选器
->DAX学习-All和Allexcept函数
allselected案例:
表1:
工号 | 归属架构 | 入职日期 | 评分 | 是否合格 |
---|---|---|---|---|
aa01 | A区域 | 2023-01-01 | 56 | 不合格 |
aa03 | G区域 | 2022-12-14 | 100 | 合格 |
aa06 | C区域 | 2022-10-24 | 80 | 合格 |
aa02 | A区域 | 2022-04-03 | 65 | 合格 |
aa08 | G区域 | 2021-12-25 | 70 | 合格 |
aa07 | B区域 | 2023-01-18 | 13 | 不合格 |
1/ 表1显示,总共有6人,其中:合格的人数有4人,不合格的人数有2人;A区域有2人,其他区域各有1人。
2/ 现在通过度量值来计算:
①人数 = count('表1'[工号])
是具有筛选功能的
②总人数 = CALCULATE( count('表1'[工号]),ALLSELECTED('表1'))
是保留外部筛选功能的
③ 下图矩阵中,总人数并没有根据内部筛选的:"所属架构"和“是否合格”来进行筛选,所以总人数始终=6
3/ 现在加上一个切片器(外部筛选器),当选择"合格’的时候,总人数根据外部筛选来计算,合格的总人数就=4
这里占比的意思是:各区域合格人数占总的合格人数的百分比
4/allselected(表)
方便的地方在于,由于allselected(表)
已经涵盖该表所有的列,所以即使更改了切片器,公式也不需要去做相应修改
将切片器改成"所属架构",那么就具有筛选区域的功能
这里占比的意思是:A区域中合格、不合格的人数占A区域总人数的百分比
5/计算占比,写成一条公式.:
占比(allselected) = count('表1'[工号]) / calculate(count('表1'[工号]),ALLSELECTED('表1'))