【问题标题】:ParallelPeriod in MDX Query with CurrentMember使用 CurrentMember 的 MDX 查询中的 ParallelPeriod
【发布时间】:2017-03-10 05:44:04
【问题描述】:

我正在尝试根据我们在一年中的繁忙时段注册的学生人数来预测我的组织需要预订的房间数量。

这个问题的第一部分是计算今年与去年相比学生人数的相对减少/增加,并以此推断今年的学生人数。

为此,我正在尝试测量以下内容:

  1. 一年中几周内的运行总数,直到一系列开始日期,例如有多少学生在 2016 年的第 1、2、3 周...
  2. 计算学生人数比往年增加/减少的百分比

我有以下疑问:

WITH MEMBER [Measures].[Period Growth] AS
(
    [Measures].[Enrolments By Week],
    ParallelPeriod([Weekly Enrolments Date].[ISO Week Calendar].[ISO Year],
        1,
        [Weekly Enrolments Date].[ISO Week Calendar].[ISO Week].currentmember)
)
SELECT NON EMPTY { [Measures].[Enrolments By Week], [Measures].[Period Growth] } ON COLUMNS, 
 NON EMPTY { FILTER([Weekly Enrolments Date].[ISO Week Calendar].[ISO Week].&[201738] : 
                    [Weekly Enrolments Date].[ISO Week Calendar].[ISO Week].&[201752],
        Cint([Term Record Creation].[ISO Week Number Of Year].CurrentMember.Member_Key) <= 10 --Cint( STRTOMEMBER(@ToISOWeekNumberOfYear, CONSTRAINED).Member_Key )
        OR
        Cint([Term Record Creation].[ISO Year].CurrentMember.Member_key) < 
        Cint([Term Start Date].[ISO Year].CurrentMember.Member_key)) } ON ROWS 
 FROM [Enrolments] 

但是,当我将ParallelPeriod 中的成员表达式设置为CurrentMember 时,我得到了计算成员的#Error。如果我将CurrentMember 更改为.&amp;[201642] 之类的值,错误就会消失 - 为什么会这样?如何获得上一年的同一周作为当年每一周行的比较?

此外,我怎样才能在同一周内获得每周相对于上一年的百分比变化,同时避免除以 0 错误?

【问题讨论】:

  • #Error 值“背后”的错误是什么? (如果您使用的是 SSMS,则必须将鼠标指针悬停在包含 #Error 的单元格上。一点也不明显)。

标签: sql-server reporting-services ssas mdx


【解决方案1】:

在我看来,这就像一个关卡:

[Weekly Enrolments Date].[ISO Week Calendar].[ISO Week]

所以是的,这是有效的,不会有错误:

[Weekly Enrolments Date].[ISO Week Calendar].[ISO Week].&[201642]

但我不认为CURRENTMEMBER 函数可以应用于级别表达式 - 如果您只是缩短为以下内容可能会更快乐:

[Weekly Enrolments Date].[ISO Week Calendar].currentmember

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    相关资源
    最近更新 更多