Power BI之DAX神功:第2卷第18回 自定义年初至今、季初至今和月初至今
友情提示:本节是上节课的补充内容,如果上节课的参数21对你没有用,本节课仍可选择跳过
《DAX神功》第2卷第11回 我们学习了累计至今区间
《DAX神功》第2卷第17回 我们学习了基于周的时间智能
如何在上节课参数21的基础上,计算累计到今区间呢?当你理解了思路,就可以以不变应万变

一、正常情况下的年累计至今
【度量值】
总销售 = sum('Sheet1'[销售])
YTD1 = CALCULATE([总销售],DATESYTD('Sheet1'[日期]))
YTD2 =
VAR m=max('Sheet1'[日期])
return
CALCULATE([总销售],'Sheet1'[日期]<=m && YEAR('Sheet1'[日期])=YEAR(m))

二、参数21情况下的年累计至今
根据我们上节课学习的,计算当前日期是当年第几周
【新建列】参数21 = WEEKNUM('Sheet1'[日期],21)
【新建列】修证年 = year('Sheet1'[日期]+(4-WEEKDAY('Sheet1'[日期],2)) )

【度量值】
YTD3 =
var m1=max('Sheet1'[日期])
var m2=max('Sheet1'[修证年])
return
CALCULATE([总销售],'Sheet1'[日期]<=m1 && 'Sheet1'[修证年]=m2)
// 年累计至今:只考虑小于等于最大日期和等于当前年

三、参数21情况下的月累计至今
【新建列】修证月 = if('Sheet1'[修证年]=YEAR('Sheet1'[日期]),MONTH('Sheet1'[日期]),12)

【度量值】
MTD =
var m1=max('Sheet1'[日期])
var m2=max('Sheet1'[修证年])
var m3=max('Sheet1'[修证月])
return
CALCULATE([总销售],'Sheet1'[日期]<=m1 && 'Sheet1'[修证年]=m2 && 'Sheet1'[修证月]=m3)
// 月累计至今:除了考虑小于等于最大日期和等于当前年,还要考虑等于当前月

四、参数21情况下的年季计至今
【新建列】
修证季度 = SWITCH('Sheet1'[修证月], 1, 1, 2,1,3, 1, 4,2,5, 2, 6,2,7, 3, 8,3,9, 3, 10,4,11,4, 12,4)
// 修证月是1,2,3时返回1,修证月是4,5,6时返回2,修证月是7,8,9时返回3,修证月是10,11,12时返回4

【度量值】
QTD =
var m1=max('Sheet1'[日期])
var m2=max('Sheet1'[修证年])
var m3=max('Sheet1'[修证季度])
return
CALCULATE([总销售],'Sheet1'[日期]<=m1 && 'Sheet1'[修证年]=m2 && 'Sheet1'[修证季度]=m3)
// 季累计至今:只考虑小于等于最大日期和等于当前年,还要考虑等于当前季度


《孙兴华讲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等等