使用 CurrentMember 在 MDX 查询中使用 ParallelPeriod
ParallelPeriod in MDX Query with CurrentMember
我正在尝试根据我们在一年中的繁忙时段注册的学生人数来预测我的组织需要预订的房间数量。
这个问题的第一部分是计算今年与去年学生人数的相对 decrease/increase,并用它来推断今年的学生人数。
为此,我正在尝试测量以下内容:
- 运行 在一年中的几周内注册到一系列开始日期,例如有多少学生在 2016 年的第 1、2、3 周入学,他们将在给定年份的 10 月和 12 月之间来到这里
- 计算学生人数increase/decrease与往年相比的百分比
我有以下查询:
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
更改为 .&[201642]
之类的值,错误就会消失 - 这是为什么?我怎样才能得到前一年的同一周作为当年每一周行的比较?
此外,如何在同一周内获取每周相对于上一年的百分比变化,同时避免除以 0 错误?
对我来说,这看起来像一个级别:
[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
我正在尝试根据我们在一年中的繁忙时段注册的学生人数来预测我的组织需要预订的房间数量。
这个问题的第一部分是计算今年与去年学生人数的相对 decrease/increase,并用它来推断今年的学生人数。
为此,我正在尝试测量以下内容:
- 运行 在一年中的几周内注册到一系列开始日期,例如有多少学生在 2016 年的第 1、2、3 周入学,他们将在给定年份的 10 月和 12 月之间来到这里
- 计算学生人数increase/decrease与往年相比的百分比
我有以下查询:
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
更改为 .&[201642]
之类的值,错误就会消失 - 这是为什么?我怎样才能得到前一年的同一周作为当年每一周行的比较?
此外,如何在同一周内获取每周相对于上一年的百分比变化,同时避免除以 0 错误?
对我来说,这看起来像一个级别:
[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