此文档为学习笔记,原课程为孙兴华老师的DAX课程,详见:https://www.bilibili.com/video/BV1YE411E7p3/?p=14&spm_id_from=pageDriver&vd_source=b8364ea855575ea66b4a27d22ca3ae38
举例一:
表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 |
求:新建度量值(而不是新建列),使评分>=60的标记为合格
1、度量值是具有筛选上下文
功能的
2、IF函数,语法:IF(逻辑判断, 为真时,为假时)
3、当IF作为度量值时,其中逻辑判断
,只能引用度量值 或 计算度量值的表达式
,而不能直接引用列
如: if('表1'[评分]>=60,...,...)
引用是错误的
4、DAX中的迭代函数
(sumx,minx…),是具有行上下文
功能的,也可用于度量值的表达式
5、所以逻辑判断时,使用迭代函数
将逻辑判断
具有具有行上下文
功能,那么该表达式应用与度量值时,就具有筛选上下文
的功能了。
6、通俗的说:
①迭代函数作为度量值的表达式时,可以直接引用列,如sumx(‘表1’,‘表1’[评分])
②那么IF函数作为度量值时,就可以包裹迭代函数表达式,从而达到语法顺利
判断 = if(sumx('表1','表1'[评分])>=60,"合格","不合格")
举例二:
求:新建度量值(而不是新建列),使入职时间>=2023年后标记为新人
这里使用迭代函数,除countx
都可以
因为countx
逐行计算时,结果都=1
是否新人 = if(year(minx('表1','表1'[入职时间]))>=2023,"新人","")