我需要一个dax衡量标准,首先计算选定客户的每月净差额,然后逐月累计YTD总额。
DAX中的标准YTD功能不适用于此计算。
我不明白为什么它不起作用,但我认为这是因为我希望YTD用于净变化的每月计算 - 因为它出现在我的视觉中(而不是每日变化的累计年初至今)。
这是我目前的YTD公式不起作用:
YTD of % Change =
TOTALYTD ( [% Change], 'DateTable'[Date].[Date] )
我在相同的视觉中使用其他YTD计算与相同的表数据,他们计算正确的答案,所以我不认为问题是我的日期表或连接。
这是我的%变更衡量标准的Dax(这个衡量标准很好。它给出了我预期的每月结果,这是月月差异)以防万一它有帮助......
% Change =
VAR __PREV_MONTH =
CALCULATE ( [% Of Base Group], DATEADD ( 'DateTable'[Date].[Date], -1, MONTH ) )
RETURN
[% Of Base Group] - __PREV_MONTH
我的每月数据是SNAPSHOT样式数据,每个月都有一个完整的数据集,所以我通常不计算几个月的总数或计数(因为每个月已经有完整的客户和总数) - 我只保留在一个表中所以我可以计算月到月的差异。
我目前收到的结果(即错误的结果)如下所示,以及预期结果
Base field Expected Result What I get Year Month % Change YTD YTD of % Change 2018 Jan -0.10% -0.10% -0.10% 2018 Feb -0.44% -0.55% -0.28% 2018 Mar -0.09% -0.64% -0.21% 2018 Apr 0.06% -0.58% -0.14% 2018 May 0.87% 0.29% 0.06% 2018 Jun -0.26% 0.03% 0.01% 2018 Jul 0.10% 0.13% 0.02% 2018 Aug 0.08% 0.21% 0.03% 2018 Sep 0.00% 0.21% 0.02% 2018 Oct -0.08% 0.13% 0.01% 2018 Nov -0.18% -0.06% -0.01% 2018 Dec -0.77% -0.83% -0.07% 2019 Jan -0.26% -1.09% -0.26% 2019 Feb -0.44% -1.53% -0.35%我找到了一个解决方案(尽管它并不漂亮)给了我正在寻找的结果。
为此,我基本上从当前[基线组的百分比]值中减去当前年份的1月份[基准组的百分比]值,然后在1月份发生的净变化上加上。我的日期表中有一列显示YYYYMM作为值,因此我可以使用值(YYYYMM)-89过滤到上一年的12月(计算第一次净变化)。
YTD Total of % Change in Select Group =
VAR FirstMonthofCurrentYear = VALUE(Min(DateTable[Date].[Year])&"01")
VAR LastMonthofPrevYear = FirstMonthofCurrentYear - 89
VAR JanPercentofBaseGroup =
CALCULATE(
[% Of Base Group],DateTable[YearMonthOrder]= FirstMonthofCurrentYear,ALLEXCEPT(DateTable,DateTable[Date])
)
VAR JanChangeinPercent =
JanPercentofBaseGroup - CALCULATE(
[% Of Base Group],DateTable[YearMonthOrder] = LastMonthofPrevYear,ALLEXCEPT(DateTable,DateTable[Date])
)
Return
If (
[% Of Base Group]=blank(),
BLANK(),
[% Of Base Group]- JanPercentofBaseGroup + JanChangeinPercent
)
我仍然不知道为什么常规YTD功能不起作用,也无法弄清楚常规YTD功能如何计算它所做的数字,但是现在我的问题解决了,因为我有这个解决方法。
假设您的日期表是一组连续的日期,那么类似下面的内容应该可以正常工作:
YTD of % Change =
CALCULATE ( [% Change], DATESYTD ( 'DateTable'[Date].[Date] ) )