我要计算去年同期的每天MTD销售额的总和,直到特定日期-上次销售交易的当天。
因此,例如,如果过滤器是year = 2019和month = 2,则我需要2018年2月的MTD销售额,直到每天计算的第5天:
MTDSales=
VAR MyDay = 5
RETURN
CALCULATE(
TOTALMTD(SUM(Sales); Calendar[Date]);
SAMEPERIODLASTYEAR(Calendar[Date]);
//here I need another filter to stop on the 5th!
)
编辑:
请查看this link以查看示例数据。
我正在尝试建立的措施是:
销售MTD CY
销售MTD LY
销售MTD CY *
销售MTD LY *
销售MTD CY **
销售MTD LY **
感谢您的帮助!
答案 0 :(得分:2)
我假设您使用的是5,因为今天是2月5日。
您可以像这样在当月获得MTDSales
:
MTDSales =
VAR DateRange = DATESBETWEEN( Calendar[Date], EOMONTH(TODAY(), - 1) + 1, TODAY() )
RETURN CALCULATE( SUM( Sales ), DateRange )
要将其与上一年匹配,只需使用SAMEPERIODLASTYEAR
。
LastYearMTDSales =
VAR DateRange = DATESBETWEEN( Calendar[Date], EOMONTH(TODAY(), - 1) + 1, TODAY() )
RETURN CALCULATE( SUM( Sales ), SAMEPERIODLASTYEAR(DateRange) )
如果您想使用与TODAY
不同的日期,只需将该日期指定为变量,然后将其传递到DateRange
出现的TODAY
变量中即可。
如果要在每月的第5天之前找到MTDSales
(假设您的过滤条件中有月份),请尝试
MTDSales =
Var MyDay = 5
VAR MyDate = MIN( Calendar[Date] ) + MyDay - 1
VAR DateRange = DATESBETWEEN( Calendar[Date], EOMONTH(MyDate, -1) + 1, MyDate )
RETURN CALCULATE( [Sum of Sales], DateRange )
然后在上一年中,您可以重复使用该度量,但会有所变化:
PrevYearMTDSales =
CALCULATE( [MTDSales], ALL( Calendar ), SAMEPERIODLASTYEAR( Calendar[Date] ) )
编辑:查看了您的PBIX之后,我意识到我对过滤器上下文做出了错误的假设。由于您希望在日期级别编写度量,因此请尝试以下方法:
Sales MTD CY =
VAR MyDay = 5
VAR CurrentDate = MAX ( 'Calendar'[Date] )
VAR MyDate = EOMONTH ( CurrentDate, -1 ) + MIN ( MyDay, DAY ( CurrentDate ) )
RETURN
CALCULATE (
TOTALMTD ( SUM ( Sales[Sales] ), 'Calendar'[Date] ),
FILTER ( 'Calendar', 'Calendar'[Date] <= MyDate )
)
上一年的度量仍然可以参考此度量并进行转换。
答案 1 :(得分:1)
将我的列名替换为您的列名,它应该可以工作 公式保持不变:
MTDSales =
VAR MyDay = 5
RETURN
CALCULATE(
TOTALMTD([total sales], 'Calendar'[DateKey]),
SAMEPERIODLASTYEAR('Calendar'[DateKey]),
FILTER(
ALL(Sales),
Sales[DateKey] >= STARTOFMONTH('Calendar'[DateKey]) && Sales[DateKey] <= DATEADD(STARTOFMONTH(Sales[DateKey]),MyDay-1,DAY)
)
)