文章插图
前面的文章曾介绍了无日期上下文的同比环比,不过数据是整月的累计,如果想计算本月至今的数据,以及相对应的上月、去年同期对比,应该怎么做呢?
其逻辑依然是不利用外部上下文,仅利用今天的日期TODAY,构造一个从本月1号到今天的日期列表,然后再执行汇总计算,度量值可以这样写:
收入 MTD =这里用到了EOMONTH函数,它的用法如下:
CALCULATE(
[收入],
FILTER(
ALL('日期表'),
'日期表'[日期]>=EOMONTH(TODAY(),-1)+1
&&'日期表'[日期]<=TODAY()
)
)
EOMONTH是一个日期函数,返回移动指定月份后的当月的最后一天日期,比如EOMONTH("2021-3-15",-1)将返回2021年2月的最后一天日期:2021-2-28 。EOMONTH可以返回移动后的月份的最后一天的日期,所以通过这个函数构造出EOMONTH(TODAY(),-1)+1,将返回本月第一天的日期,利用这个逻辑,顺利计算出本月至今的数据 。
同样的方式,计算上个月的本月至今,可以这样写:
收入 MTD PM =EOMONTH(TODAY(),-2)+1返回上个月的第一天,然后上个月的今日,利用了另外一个日期函数EDATE,EDATE(TODAY(),-1)返回上月的今日 。
CALCULATE(
[收入],
FILTER(
ALL('日期表'),
'日期表'[日期]>=EOMONTH(TODAY(),-2)+1
&&'日期表'[日期]<=EDATE(TODAY(),-1)
)
)
EDATE的用法如下:
EDATE也是一个日期函数,返回移动指定月份后的对应日期,比如EDATE("2021-3-15",1)将返回"2021-4-15",如果移动后的日期在对应的月份中不存在,晚于当月最后一天,则自动返回该月的最后一天,比如EDATE("2021-3-30",-1),2月是没有30号的,则自动返回为最后一天2021-2-28 。这里用到了两个常用的日期函数,它们功能非常容易理解,只和提供的参数有关,和其他上下文没有关系,也不需要日期表,比时间智能函数的逻辑简单多了,在某些场景下很好用 。
当然TODAY本身也是个日期函数 。
同理,可以很容易的计算出本月至今的上年同期数据:
收入 MTD PY =用矩阵显示如下:
CALCULATE(
[收入],
FILTER(
ALL('日期表'),
'日期表'[日期]>=EOMONTH(TODAY(),-13)+1
&&'日期表'[日期]<=EDATE(TODAY(),-12)
)
)
计算上月同期数据时候,还有个小问题是,如果本月的天数比上个月少,比如2021年2月份,2月28号是最后一天,本月至今就是2月整月累计的数据,但上期是1月1号到28号的数据,如果想让1月也显示出整月的累计数,可以加个判断逻辑,这样来写本月至今的上月的度量值:
上面利用了日期函数,很方便了计算出了本月至今和环比、同比的数据,那么能不能利用时间智能函数来完成这些运算呢,也是可以的 。
下面看看利用时间智能函数的写法:
收入 MTD1 =因为没有外部日期上下文,这里利用了TREATAS将TODAY视同为日期表里的日期,作为DATESMTD的上下文,这样就会返回从月初至今的日期列表,然后执行汇总计算 。
CALCULATE(
[收入],
DATESMTD(
TREATAS({TODAY()},'日期表'[日期]))
)
TREATAS的第一个参数必须是个表,而日期函数返回一个值,所以在外面套个大括号{ },就可以将值变成表 。
同理本月至今的上月以及上年同期,时间智能函数的写法是这样的:
收入 MTD PM1 =
CALCULATE(
[收入],
以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!
「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助:
- 同比怎么计算 同比怎么计算公式
- 近日江苏,一个叫小米的女孩去闺蜜家看到的化妆品牌跟以前完全不一样了,她很好奇
- 连锁门店 中国最有名的5大烘焙蛋糕品牌
- 寻找真知派沈坤记那些曾经辉煌过的品牌——年收入高达88亿的三株口服液1
- 没建档可以在医院生吗 可以在没有建档的医院生孩子吗
- 温暖的瓦罐煨 炖汤的瓦罐
- 牛奶减肥法 健康有效的减肥法
- 哺乳期可以吃西瓜吗 揭秘哺乳期吃西瓜不当的影响
- 补钙的食品有哪些 钙是补得越多越好吗
- 常喝红茶有哪些好处 红茶的冲泡方法