一、网友提问



二、解答问题
我给您解决一个筛选2021和2022年的思路,您自行完成 年月 筛选,因为理解知识需要自己思考。
打个比方,我学DAX,是从结果倒推原理,我的方法不一定最好,但是我自己动脑子了,总比从国外网站上看大神文章后,以记忆的方式,谈什么内层、外层、隐形、显形、筛选覆盖...大神们讲的没错,但是为什么是这样的,原理中的原理是什么?
我讲《PowerBI火力全开》不讲原理就是让大家利用结果倒推原理,真正学以致用,但是我看到很多人说我不讲原理,我为了成全大家讲了《DAX神功》,所谓原理=内层、外层、隐形、显形、筛选覆盖...这些名词的由来。如果只记忆名词我们就失去了自己去脑思考的过程,还谈何学会呢?
【1】先解决住院天数,开始思考
根据网友提问,当网友筛选2021年时,病人1号和2号是出院日期-入院日期,3号是2021/12/31-入院日期。当筛选2022年时,因为病人1号和2号在2021年就出院了,所以只有3号,他的计算方法是出院日期-2022/1/1

我们将思路画出来

当然,这里有个业务问题,以筛选2022年为例,3号病人1月29日出院,那么1月29日算不算一天,因为我没住过院不懂这个,所以说业务问题我不解决,如果需要计算当天,您只需要在我后面讲的公式中+1即可
【2】眼见为实,度量值为虚
现在我们需要一个度量值但是 我不建议 直接写度量值,度量值是虚拟存在,你能看到每一步的结果吗?
我的方法是这样的,用新建表看每一步结果,然后放到度量值中
<1> 对入院日期和出院日期进行筛选
返回结果:
返回结果:
<2> 给筛选结果添加列计算天数
公式tb2解读:
添加列,用出院日期-入院日期,并将数据类型转成整型。
出院日期的计算方法:如果出院日期大于2021年12月31日就返回2021年12月31日,否则返回出院日期。
入院日期的计算方法:如果入院日期大于等于2021年1月1日就返回入院日期,否则返回2021年1月1日。
返回结果:
同理:
返回结果:
<3>把年份写活,利用表构造函数我们新建一张表
返回表格:如果你想对字段重命名,详见《DAX神功》第1卷第3回
新建切片器,将Value字段放到切片器中
<4> 利用selectedvalue表示筛选结果,用sumx计算天数
返回结果:
以上我们计算的是
实际住院天数
,对于出院患者实际住院天数和年月筛选,只要你理解了上面的思路,一定可以做出来,加油!
友情提示:
别照抄代码,也不建议照搬思路,DAX只是一个工具,思路源于你对业务知识的理解。因为实际分析中,需求是不断变化的,代码也会随之不断变化,所以你做分析,必须要自己学会。
《孙兴华讲PowerBI火力全开》PowerBI必学课程
https://www.bilibili.com/video/BV1qa4y1H7wp
《DAX神功》文字版合集:
https://www.bilibili.com/read/readlist/rl442274
《DAX神功》视频版合集:
https://www.bilibili.com/video/BV1YE411E7p3
PowerBI(DAX函数)、PowerQuery(M函数)、Python办公自动化、Python爬虫、Python数据分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等