我想计算去年同期每日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!
)编辑:
请查看此链接以查看示例数据。
我试图建立的措施是:销售MTD CY
销售MTD LY销售MTD CY*
销售MTD LY*销售MTD CY**
销售MTD LY**
谢谢你的帮助!
发布于 2019-02-05 20:35:18
因为今天是二月五日,所以我想你用的是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出现的位置。
如果您想要在这个月的第五天找到这个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 )
)前一年的措施仍然可以参照这一措施和转移。
发布于 2019-02-05 20:15:20
将我的列名替换为您的列名,它应该有效--公式保持不变:
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)
)
)

https://stackoverflow.com/questions/54541990
复制相似问题