PowerPivot - DAX - 预算分析 - 总计不正确

时间:2017-04-24 12:50:55

标签: powerpivot dax

我是使用PowerPivot和DAX的新手,我正在寻找迄今为止我无法解决的常见问题的帮助 - >将实际数据/事实与预算和总计不匹配的总和进行比较。 这是模型  enter image description here 这就是预算数据的样子  enter image description here 实际数据(例如TY TW单位)来自Booking Details表,其具有与TicketTypeId,ResourceTypeId和DateId类似的列。 这是预订明细表。它没有DateId列,但链接的TripId列在其表中有一个指向日期的链接。  enter image description here

我们在资源类型层次结构和故障单类型层次结构的第1级设置了一个数据透视表 enter image description here 这是方差的公式:

TY TW Units v Budget Units TY TW $ :=
CALCULATE ( 'Booking Details'[TY TW UNITS] - [Budget Units TY TW] )

我们想要达到的目标是:
1)如果没有预算,请不要计算方差(TY TW UNITS v BUDGET UNITS TY TW $ Var) 2)Grand Total应计算为方差输出的总和 最后一点是最棘手的,因为我只能设法得到这个结果。  enter image description here 总计不正确,因为基础数据未被过滤,在这种情况下我不知道如何做到这一点 我在这种情况下使用的方差更新公式:

TY TW Units v Budget Units TY TW $ :=
CALCULATE (
    IF (
        ISBLANK ( [Budget Units TY TW] ),
        BLANK (),
        'Booking Details'[TY TW UNITS] - [Budget Units TY TW]
    )
)

数据在资源或故障单类型的预订详细信息中具有空值(并非在所有情况下,但我觉得值得一提),但始终有日期ID。
非常感谢任何帮助 谢谢。
附:
这是我为TY TW预算单位制定的公式:

Budget Units TY TW :=
CALCULATE (
    IF (
        Parameters[Filter Calendar Type] = "Fiscal",
        CALCULATE (
            SUM ( 'Budgets'[Vehicles] ) + SUM ( 'Budgets'[Passengers] ),
            Dates[Fiscal Year] = VALUES ( Parameters[Current Fiscal Year] ),
            Dates[Fiscal Week] = VALUES ( Parameters[Current Fiscal Week] )
        ),
        CALCULATE (
            SUM ( 'Budgets'[Vehicles] ) + SUM ( 'Budgets'[Passengers] ),
            Dates[Calendar Year] = VALUES ( Parameters[Current Calendar Year] ),
            Dates[Calendar Week] = VALUES ( Parameters[Current Calendar Week] )
        )
    )
)

这是TY TW UNITS的公式:

TY TW UNITS :=
IF (
    Parameters[Filter Calendar Type] = "Fiscal",
    CALCULATE (
        [TRAFFIC UNITS],
        Dates[Fiscal Year] = VALUES ( Parameters[Current Fiscal Year] ),
        Dates[Fiscal Week] = VALUES ( Parameters[Current Fiscal Week] )
    ),
    CALCULATE (
        [TRAFFIC UNITS],
        Dates[Calendar Year] = VALUES ( Parameters[Current Calendar Year] ),
        Dates[Calendar Week] = VALUES ( Parameters[Current Calendar Week] )
    )
)

这取决于流量单位,其公式为:

TRAFFIC UNITS :=
CALCULATE ( SUM ( [UnitCount] ), 'Booking Details'[Checked In] = TRUE () )

1 个答案:

答案 0 :(得分:0)

通过额外的措施解决了这个问题,这基本上就是差异。

Diff TY TW Units v Budget Units TY TW:=SUMX (
    FILTER ( 'Booking Details', ISBLANK ( [Budget Units TY TW] ) ),
     'Booking Details'[TY TW UNITS]
)

这是计算不正确的“旧”计算。

TY TW Units v Budget Units TY TW var:=CALCULATE (
    'Booking Details'[TY TW UNITS] - [Budget Units TY TW],
    FILTER (
        'Budgets',
        (
            CALCULATE (
                SUM ( 'Budgets'[Passengers] ) + SUM ( 'Budgets'[Vehicles] )
            )
                > 0
        )
    )
)

这两个在实际测量中汇集在一起​​,显示给用户。

TY TW Units v Budget Units TY TW $:=CALCULATE(
    [TY TW Units v Budget Units TY TW var] + [Diff TY TW Units v Budget Units TY TW]
)