DAX时间智能函数-性能数据计算

DAX Time Intelligence Functions - Performance Data Calculation

我在 Visual Studio 2017 年尝试在 Analysis Services 的表格模型中使用 DAX 时间智能函数。

我有以下计算需求:

  1. 日期(日期时间)
  2. 月度表现(百分比)
  3. 账户

对于每个帐户,我们要计算 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 值,但它应该可以帮助您指明正确的方向.