去年至今的月份总数,直到该月的特定日期

时间:2019-02-05 19:48:21

标签: powerbi dax

我要计算去年同期的每天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 **

感谢您的帮助!

2 个答案:

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

enter image description here