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
)
我有一个简单的预算 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
)