DAX学习-度量值输出标量

此文档为学习笔记,原课程为孙兴华老师的DAX课程,详见:https://www.bilibili.com/video/BV1YE411E7p3?p=10&vd_source=b8364ea855575ea66b4a27d22ca3ae38

度量值可以返回标量

一、单行单列

在DAX中,单行单列的表可以用作标量值输出

如:
表3中aa01和aa02有2种补贴
其他员工只有1中补贴
表1和表3是一对多的关系

表3:

工号科目补贴
aa01饭贴100
aa06车费50
aa02饭贴100
aa02车费50
aa01车费50
aa03饭贴100
aa08饭贴100
aa07车费50

表1:

工号归属架构入职日期评分
aa01A区域2023-01-0156
aa03G区域2022-12-14100
aa06C区域2022-10-2480
aa02A区域2022-04-0365
aa08G区域2021-12-2570
aa07B区域2023-01-1813

求:若员工只有1种补贴,则标记出该补贴的科目

方法1:
①求:每个员工各有补贴数
②对于补贴种类,返回一张去重后的表
③如果补贴数量=1,则显示补贴科目,否则显示空,度量值将返回标量

科目 = 
var qty=countrows(distinct('表3')) --取表3中的所有行,取得补贴数
var obj=values('表3'[科目])  --返回表3中科目去重后的表
return if(qty=1,obj,"") --如果补贴数量=1,则返回对应的科目

在这里插入图片描述

方法2:
求唯一值也可以使用HASONEVALUE

科目 = if(HASONEVALUE('表3'[科目]),values('表3'[科目]),"")

方法3:
也可以使用SELECTEDVALUE来判断该列,如果某一列的上下文仅剩下一个非重复值,则返回该值

科目 = selectedvalue('表3'[科目])

二、多行多列

求:将员工的补贴科目,以度量值输出标量

科目 = selectedvalue('表3'[科目],concatenatex(values('表3'[科目]),'表3'[科目],"、"))

意思是:如果"科目"这一列的上下文仅剩下一个非重复值,则返回该值,否则利用concatenatex将"科目"上下文的多条数据,用"、"拼接成一个字符串
在这里插入图片描述
求:不要在总计这里显示科目
①求每个员工的人数,那么每个员工只会是1个个体
②如果员工人数=1,才会显示补贴科目,否则就显示空
③以上,就会排除总计

科目 = if(HASONEVALUE('表1'[工号]),CONCATENATEX(values('表3'[科目]),'表3'[科目],"、"),"")

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jackie_Mina

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值