对于有两列日期(订单日期和发货日期)的订单表,之前介绍过如何利用虚线关系和USERELATIONSHIP函数实现不同日期类型的销售额计算,参考:
认识Power BI中的非活动关系
还有一种需求经常被问到,对于有订单日期和发货日期的订单表,如果发货后表示该笔订单完成,那么如何统计出尙未完成的订单呢?
本文以统计当日未完成订单数量以及累计未完成订单数量来介绍这个问题。
首先,日期表与订单表同样只能有一列建立活动关系,这里还是只用订单表的订单日期与日期表建立关系,发货日期不建立关系。
然后写一个度量值来计算每日的未发货订单数量:
其中订单数是个基础度量值:
订单量 = COUNTROWS('订单表')
上图的度量值如果只看这个DAX本身,可能难以理解,只有结合外部上下文才更好理解它的含义。
在外部日期表上下文的筛选环境下,日期表的日期按订单日期筛选订单表,也就是查找出当日产生的订单,FILTER在当日订单的发货日期中,筛选发货日期晚于当前日期或者发货日期为空的订单,然后计算满足条件的订单数量销售额的计算公式,就得到了当日的未发货订单数量。
这个度量值是在外部上下文的关系筛选,与DAX内部的筛选逻辑共同作用销售额的计算公式,来实现分析需求的。
如果要进一步计算出截至当天累计的未发货订单,度量值可以这样来写:
(点击查看大图)
因为要计算累计未发货的订单,不是当日的,不能让关系自动筛选当前日期的订单,所以这里用了两个FILTER条件。
对两个FILTER条件筛选出的集合取交集,得到截至当前日期,所有未发货的订单,对这些订单计数,就得到了累计未发货订单数量。
上面写法是统计未完成的订单数量,如果需要统计未完成的订单金额,同样是上面的思路,只需要把CALCULATE的第一个参数改成对销售额求和就可以了。
本文的这个分析需求不难实现,不过通过这个简单的例子,仔细理解这两个度量值的写法,可以帮助我们理解外部上下文、内部DAX条件的筛选逻辑,以及二者的共同作用,最终按业务逻辑完成计算实现了分析目的。
1、本站资源针对会员完全免费,站点中所有资源大部分为投稿作者付费教程,切勿轻易添加教程上除本站信息外的任何联系方式,谨防被割,如有疑问请随时联系客服。
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。