小伙伴们,大家好!今天和大家分享实际工作中,我们经常会遇到的计算场景:半累加计算。这个名词可能大家比较陌生,接下来小编的分享会通过案例和大家一起深入浅出的理解。
LASTDATE函数:
函数返回的是一个只包含一行的表,该行表示当前筛选上下文中可见的最后一个日期,当其用作CALCULATE的筛选器参数时,LASTDATE覆盖日期表的筛选上下文,只保留所选区间的最后一天。
年份层级:返回的是本年最后一天
季度层级:返回的是本季度最后一天
月份层级:返回的是本月的最后一天
通常这个函数可以用来计算月末库存或者月末存款余额的场景(注意:只适用于每个月末都有值的情况)
01.LastDate = LASTDATE('Date'[Date])
02.LastDateSalesAmount = CALCULATE ( [Sum of Balance], LASTDATE ( 'Date'[Date] ) )
LASTNOBLANK函数:
如果在当前筛选上下文的最后一天之前的日期是有值,但是,月末最后一天没有数据,那么这种情况下更好的解决方案是LASTNOBLANK函数。此函数是一个迭代函数,它会去扫描一个表,并返回第2个参数不为空时所对应的表的最后一个值。例如,我们在月份级别使用这个函数时,它迭代该月的每个日期,检查余额表对应的记录是否为空。
03.LastNoBlank = LASTNONBLANK ( 'Date'[Date], [02.LastDateSalesAmount] )
04.LastNoBlankAmount = CALCULATE ( [Sum of Balance], LASTNONBLANK ( 'Date'[Date], [Sum of Balance] ) )
05.LastNoBlankAmountRevised =
SUMX (
VALUES ( 'Balances'[Name] ),
CALCULATE ( [Sum of Balance], LASTNONBLANK ( 'Date'[Date], [Sum of Balance] ) )
)