总月初至今,去年直到月的某一天

问题描述 投票:1回答:2

我想计算每日去年同期MTD销售额的总和,只有等到特定的一天 - 最后的销售交易的日子。

因此,例如,如果过滤器是一年= 2019和月= 2,我需要的MTD销量为2018年2月,直到一天,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 **

感谢您的帮助!

powerbi dax
2个回答
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变量。


如果你想找到MTDSales到一个月的第5天(假设你有你的过滤器上下文的月),试试这个

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
投票

为你更换我的列名,它应该工作的公式仍然是相同的:

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)
      )
    )

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.