在DAX for Power BI中需要不同的YTD公式 - 标准YTD不起作用

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

我需要一个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%  

powerbi dax
2个回答
1
投票

我找到了一个解决方案(尽管它并不漂亮)给了我正在寻找的结果。

为此,我基本上从当前[基线组的百分比]值中减去当前年份的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功能如何计算它所做的数字,但是现在我的问题解决了,因为我有这个解决方法。


0
投票

假设您的日期表是一组连续的日期,那么类似下面的内容应该可以正常工作:

YTD of % Change =
CALCULATE ( [% Change], DATESYTD ( 'DateTable'[Date].[Date] ) )
© www.soinside.com 2019 - 2024. All rights reserved.