DAX时间智能函数-性能数据计算
DAX Time Intelligence Functions - Performance Data Calculation
我在 Visual Studio 2017 年尝试在 Analysis Services 的表格模型中使用 DAX 时间智能函数。
我有以下计算需求:
- 日期(日期时间)
- 月度表现(百分比)
- 账户
对于每个帐户,我们要计算 YTD、1Y、2Y、3M、5M 的性能指标...
使用以下性能公式:
Perf for 3M =
(1 + CurrentMonthPerf/100)*(1 + PriorMonth/100)*(1 + PriorPriorMonth/100) - 1
Perf for 1Y =
(1 + CurrentMonthPerf/100)*(1 + {1MonthAgoPerf}/100)*...* (1 + {12MonthsAgoPerf}/100) - 1
YTD 的性能 = 与上述计算相同,但仅适用于从一月到当前 table 单元格的月份。每行将循环计算产品:
(1 + X)...(1 + Y)) - 1
我是 DAX 语法的新手,所以不确定如何在 SSDT 2017 中使用 DAX 执行此计算。
请告诉我如何执行更复杂的日期计算。
我在自己的报告中大致这样写了 returns 的每月链接(假设我有 returns 的每月时间序列):
Performance =
VAR StartDate = <...>
VAR EndDate = <...>
RETURN -1 +
PRODUCTX(
FILTER( ALL( Table1[Date] ),
Table1[Date] <= EndDate &&
Table1[Date] > StartDate
),
1 + Table1[MonthReturn]
)
基本上,您在过滤后使用产品 table 而不是编写循环。
这是一种高度简化的形式,其中我未定义开始日期和结束日期的定义,并假设您每个月只有一个 return 值,但它应该可以帮助您指明正确的方向.
我在 Visual Studio 2017 年尝试在 Analysis Services 的表格模型中使用 DAX 时间智能函数。
我有以下计算需求:
- 日期(日期时间)
- 月度表现(百分比)
- 账户
对于每个帐户,我们要计算 YTD、1Y、2Y、3M、5M 的性能指标...
使用以下性能公式:
Perf for 3M =
(1 + CurrentMonthPerf/100)*(1 + PriorMonth/100)*(1 + PriorPriorMonth/100) - 1
Perf for 1Y =
(1 + CurrentMonthPerf/100)*(1 + {1MonthAgoPerf}/100)*...* (1 + {12MonthsAgoPerf}/100) - 1
YTD 的性能 = 与上述计算相同,但仅适用于从一月到当前 table 单元格的月份。每行将循环计算产品: (1 + X)...(1 + Y)) - 1
我是 DAX 语法的新手,所以不确定如何在 SSDT 2017 中使用 DAX 执行此计算。
请告诉我如何执行更复杂的日期计算。
我在自己的报告中大致这样写了 returns 的每月链接(假设我有 returns 的每月时间序列):
Performance =
VAR StartDate = <...>
VAR EndDate = <...>
RETURN -1 +
PRODUCTX(
FILTER( ALL( Table1[Date] ),
Table1[Date] <= EndDate &&
Table1[Date] > StartDate
),
1 + Table1[MonthReturn]
)
基本上,您在过滤后使用产品 table 而不是编写循环。
这是一种高度简化的形式,其中我未定义开始日期和结束日期的定义,并假设您每个月只有一个 return 值,但它应该可以帮助您指明正确的方向.