MTD 预算与财政日历

MTD Budget with Fiscal Calenar

我有一个简单的预算 table,显示每周预算: 周 - 预算 - 文章

现在我想获得 运行 的 MTD 比较总数。 为此,我将每周预算除以工作日数:

Budget per Day = DIVIDE([Budget], [# Working Days per Week])

由于我有一个每个月都有特定结束日期和开始日期的财务日历,所以我无法将时间智能功能与 DAX 一起使用。 因此我开发了这个功能:

Budget MTD = 
CALCULATE (
    SUMX (
        'Calendar',
        [Budget per Day]
    ),
    FILTER (
        ALL ( 'Calendar' ),
        'Calendar'[Fiscal Year]
            = VALUES ( 'Calendar'[Fiscal Year] )
            && 'Calendar'[Fiscal Month Number]
                = MAX ( 'Calendar'[Fiscal Month Number] )
            && 'Calendar'[Date]
                <= MAX ( 'Calendar'[Date] )
            && 'Calendar'[IsWorkingDay] = 1
    )
)

不知何故,我总能得到整个月的预算。 这里缺少什么?

我想不知何故我需要添加像<=今天这样的东西,对吗?

此度量值将用在带有当月过滤器的矩阵中。

由于您使用的是行中包含月份的矩阵,因此 MAX( 'Calendar'[Date] ) 将 return 当前行中月份的最后一天。如果 Calendar[Date] 是 Datetime 类型并且包含一个真实的日期,可以简单地在 TODAY() 上添加条件,如下所示

Budget MTD =
CALCULATE(
    SUMX(
        'Calendar',
        [Budget per Day]
    ),
    FILTER(
        ALL( 'Calendar' ),
        'Calendar'[Fiscal Year]
            = VALUES( 'Calendar'[Fiscal Year] )
            && 'Calendar'[Fiscal Month Number]
                = MAX( 'Calendar'[Fiscal Month Number] )
            && 'Calendar'[Date]
                <= MAX( 'Calendar'[Date] )
            && 'Calendar'[Date]
                <= TODAY()
            && 'Calendar'[IsWorkingDay] = 1
    )
)

但这只会更改上个月的 MTD 值,即当前值。相反,如果我们想过滤每个月以计算截至当月同一天的 MTD,那么一个选项可能是将 'Calendar'[Fiscal Month Day Number] 列添加到带有日期的日历 table从月初开始(我假设它可能与日期的那天不同)

Budget MTD =
VAR fiscalYear =
    MAX( 'Calendar'[Fiscal Year] )
VAR fiscalMonthNumber =
    MAX( 'Calendar'[Fiscal Month Number] )
VAR currentFiscalMonthDayNumber =
    CALCULATE(
        MAX( 'Calendar'[Fiscal Month Day Number] ),
        'Calendar'[Date]
            = TODAY(),
        ALL( 'Calendar' )
    )
RETURN
    CALCULATE(
        SUMX(
            'Calendar',
            [Budget per Day]
        ),
        ALL( 'Calendar' ),
        'Calendar'[Fiscal Year] = fiscalYear,
        'Calendar'[Fiscal Month Number] = fiscalMonthNumber,
        'Calendar'[Fiscal Month Day Number] <= currentFiscalMonthDayNumber,
        'Calendar'[IsWorkingDay] = 1
    )