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

时间:2019-03-27 23:26:21

标签: powerbi dax

我需要一个dax度量值,该度量值首先以选定客户的百分比计算每月净差额,然后按月汇总年初至今的总和。

DAX中的标准YTD函数不适用于此计算。

我不明白为什么它不起作用,但是我想这是因为我希望对净变化的MONTHLY月度计算使用YTD,因为它在我的视觉效果中显示(而不是每日变化的累计YTD)。 / p>

这是我当前无法使用的YTD公式:

YTD of % Change =
TOTALYTD ( [% Change], 'DateTable'[Date].[Date] )

我在相同的视觉效果中使用相同的表数据进行其他YTD计算,它们计算出正确的答案,所以我认为问题出在我的日期表或连接上。

这是我的%变化指标的达克斯(此指标很好。它提供了我期望的月度结果,这是逐月的差异),以防万一...

% Change =
VAR __PREV_MONTH =
    CALCULATE ( [% Of Base Group], DATEADD ( 'DateTable'[Date].[Date], -1, MONTH ) )
RETURN
    [% Of Base Group] - __PREV_MONTH

我的月度数据是SNAPSHOT样式数据,每个月都有完整的数据集,因此我通常不计算跨月的总数或计数(因为每个月已经具有客户和总数的完整计数)-我只保留在一张桌子,这样我就可以计算出月份之间的差异。

我当前收到的结果(即错误的结果)以及预期的结果如下所示

基础 字段预期结果我得到的

年初至今的月份变化%年初至今 变化百分比

2018年1月-0.10%-0.10%-0.10%

2018年2月-0.44%-0.55%-0.55%-0.28%

2018年3月-0.09%-0.64%-0.21%

2018年4月0.06%-0.58%-0.58%-0.14%

2018年5月0.87%<0.29%0.06%

2018年6月-0.26%0.03%0.01%

2018年7月0.10%0.13%0.13%0.02%

2018年8月0.08%0.21%0.03%

2018年9月0.00%0.001%0.21%0.02%

2018年10月-0.08%0.13%0.01%

2018年11月-0.18%-0.06%-0.06%-0.01%

2018年12月-0.77%-0.83%-0.07%

2019年1月-0.26%-1.09%-0.26%

2019年2月-0.44%--1.53​​%-0.35%

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方案(尽管它不是很漂亮),可以为我提供所需的结果。

为此,我基本上从当前[基础组的百分比]值中减去了当年1月[基础组的百分比]的值,然后在1月发生的净变化中添加了该值。我的日期表中有一列显示YYYYMM作为值,因此我可以使用value(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函数如何计算它的数字,但是现在有了这种解决方法,我的问题就解决了。

答案 1 :(得分:0)

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

YTD of % Change =
CALCULATE ( [% Change], DATESYTD ( 'DateTable'[Date].[Date] ) )