MDX:移动平均计算仅给出(空)结果
MDX: Moving average calculation only gives (null) results
我正在尝试在 SSAS 2014 中使用 MDX 计算移动平均线,但所有结果都出来了(空)。
阅读多个网络参考和博客文章让我认为这应该有效,给出 3 个月的移动平均值:
With
MEMBER [Measures].[MA3] AS
Avg(
[Date].[Calendar Years].[Month].CurrentMember.Lag(2)
: [Date].[Calendar Years].[Month],
[Measures].[Project Views]
)
SELECT { [Measures].[Project Views], [Measures].[MA3] } ON 0,
[Date].[Calendar Years].[Month] ON 1
FROM [ProjectAccesses]
但是,(null) 出现在每一列中。
我希望成员数在每种情况下都为 3,使用:
MEMBER [Measures].[C3] AS
Count(
[Date].[Calendar Years].[Month].CurrentMember.Lag(2)
: [Date].[Calendar Years].[Month],
INCLUDEEMPTY
)
但同样,没有检测到语法错误,但所有值都是 (null),这让我相信月份范围集可能是空的。
我已经绕了好几个小时了,运行 没有什么可以尝试的了。
任何人都可以提出可能出了什么问题吗?我是 MDX 的新手,所以可能是我的查询结构有误,或者我的多维数据集配置中存在一些我无法找到的错误。
谢谢
我相信你需要改变
": [Date].[Calendar Years].[Month],"
至
": [Date].[Calendar Years].currentmember,"
[日期].[日历年].[月] -> 应该给出级别,而不是你想要的当前成员
我找到了解决方案。我曾假设我需要根据我的 [Calendar Years] 层次结构中的成员来形成我的集合。然而,以下没有层次结构的工作正常(虽然我无法解释为什么原始版本没有)。
With
MEMBER [Measures].[MA3] AS
Avg(
[Date].[Month].CurrentMember.Lag(2)
: [Date].[Month].CurrentMember,
[Measures].[Project Views]
)
MEMBER [Measures].[C3] AS
Count(
[Date].[Month].CurrentMember.Lag(2)
: [Date].[Month].CurrentMember,
INCLUDEEMPTY
)
SELECT { [Measures].[Project Views], [Measures].[MA3] , [Measures].[C3] } ON 0,
[Date].[Calendar Years].[Month] ON 1
FROM [ProjectAccesses]
我很惊讶您不能始终使用日历年层次结构。我添加了一些额外的诊断措施,以便您可以查看当前成员函数返回的内容:
WITH
MEMBER [Measures].[MA3] AS
AVG(
[Date].[Calendar Years].CurrentMember.Lag(2)
: [Date].[Calendar Years].CurrentMember,
[Measures].[Project Views]
)
MEMBER [Measures].[C3] AS
COUNT(
[Date].[Calendar Years].CurrentMember.Lag(2)
: [Date].[Calendar Years].CurrentMember,
INCLUDEEMPTY
)
MEMBER [Measures].[Diagn1] AS
[Date].[Calendar Years].CurrentMember.member_caption
MEMBER [Measures].[Diagn2] AS
[Date].[Calendar Years].CurrentMember.Lag(2).member_caption
SELECT
{
[Measures].[Project Views]
, [Measures].[MA3]
, [Measures].[C3]
, [Measures].[Diagn1]
, [Measures].[Diagn2]
} ON 0,
[Date].[Calendar Years].[Month].MEMBERS ON 1
FROM [ProjectAccesses];
我正在尝试在 SSAS 2014 中使用 MDX 计算移动平均线,但所有结果都出来了(空)。
阅读多个网络参考和博客文章让我认为这应该有效,给出 3 个月的移动平均值:
With
MEMBER [Measures].[MA3] AS
Avg(
[Date].[Calendar Years].[Month].CurrentMember.Lag(2)
: [Date].[Calendar Years].[Month],
[Measures].[Project Views]
)
SELECT { [Measures].[Project Views], [Measures].[MA3] } ON 0,
[Date].[Calendar Years].[Month] ON 1
FROM [ProjectAccesses]
但是,(null) 出现在每一列中。
我希望成员数在每种情况下都为 3,使用:
MEMBER [Measures].[C3] AS
Count(
[Date].[Calendar Years].[Month].CurrentMember.Lag(2)
: [Date].[Calendar Years].[Month],
INCLUDEEMPTY
)
但同样,没有检测到语法错误,但所有值都是 (null),这让我相信月份范围集可能是空的。
我已经绕了好几个小时了,运行 没有什么可以尝试的了。
任何人都可以提出可能出了什么问题吗?我是 MDX 的新手,所以可能是我的查询结构有误,或者我的多维数据集配置中存在一些我无法找到的错误。
谢谢
我相信你需要改变
": [Date].[Calendar Years].[Month],"
至
": [Date].[Calendar Years].currentmember,"
[日期].[日历年].[月] -> 应该给出级别,而不是你想要的当前成员
我找到了解决方案。我曾假设我需要根据我的 [Calendar Years] 层次结构中的成员来形成我的集合。然而,以下没有层次结构的工作正常(虽然我无法解释为什么原始版本没有)。
With
MEMBER [Measures].[MA3] AS
Avg(
[Date].[Month].CurrentMember.Lag(2)
: [Date].[Month].CurrentMember,
[Measures].[Project Views]
)
MEMBER [Measures].[C3] AS
Count(
[Date].[Month].CurrentMember.Lag(2)
: [Date].[Month].CurrentMember,
INCLUDEEMPTY
)
SELECT { [Measures].[Project Views], [Measures].[MA3] , [Measures].[C3] } ON 0,
[Date].[Calendar Years].[Month] ON 1
FROM [ProjectAccesses]
我很惊讶您不能始终使用日历年层次结构。我添加了一些额外的诊断措施,以便您可以查看当前成员函数返回的内容:
WITH
MEMBER [Measures].[MA3] AS
AVG(
[Date].[Calendar Years].CurrentMember.Lag(2)
: [Date].[Calendar Years].CurrentMember,
[Measures].[Project Views]
)
MEMBER [Measures].[C3] AS
COUNT(
[Date].[Calendar Years].CurrentMember.Lag(2)
: [Date].[Calendar Years].CurrentMember,
INCLUDEEMPTY
)
MEMBER [Measures].[Diagn1] AS
[Date].[Calendar Years].CurrentMember.member_caption
MEMBER [Measures].[Diagn2] AS
[Date].[Calendar Years].CurrentMember.Lag(2).member_caption
SELECT
{
[Measures].[Project Views]
, [Measures].[MA3]
, [Measures].[C3]
, [Measures].[Diagn1]
, [Measures].[Diagn2]
} ON 0,
[Date].[Calendar Years].[Month].MEMBERS ON 1
FROM [ProjectAccesses];