【问题标题】:DAX Time Intelligence Functions - Performance Data CalculationDAX 时间智能函数 - 性能数据计算
【发布时间】:2018-11-27 19:26:02
【问题描述】:

我正在尝试在 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

年初至今的性能 = 与上述相同的计算,但仅适用于从一月到当前表格单元格的月份。每行将循环计算产品: (1 + X)...(1 + Y)) - 1

我是 DAX 语法的新手,因此不确定如何在 SSDT 2017 中使用 DAX 执行此计算。

请告知我如何执行更复杂的日期计算。

【问题讨论】:

    标签: sql-server visual-studio ssas dax sql-server-data-tools


    【解决方案1】:

    我在自己的报告中大致这样写了我的每月回报链接(假设我有每月的回报时间序列):

    Performance = 
    VAR StartDate = <...>
    VAR EndDate = <...>
    RETURN -1 +
    PRODUCTX(
        FILTER( ALL( Table1[Date] ),
            Table1[Date] <= EndDate &&
            Table1[Date] > StartDate
        ),
        1 + Table1[MonthReturn]
    )
    

    基本上,您在过滤表上使用产品,而不是编写循环。


    这是一种高度简化的表格,我没有定义开始和结束日期的定义,并假设您每个月只有一个返回值,但它应该有助于为您指明正确的方向。

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多