[日期]。[日历年] .CURRENTMEMBER.CHILDREN没有接孩子

时间:2014-05-10 16:15:16

标签: ssas mdx

如果我运行以下命令,则两个自定义度量将返回相同的结果。为什么[Measures].[AvgOfChildren]不返回[Calendar Year]以下级别的平均值?

WITH MEMBER [Measures].[Avg Yearly Reseller Sales Amount] AS
    AVG(
        {[Date].[Calendar].[Calendar Year].MEMBERS},
        [Measures].[Reseller Sales Amount])
MEMBER [Measures].[AvgOfChildren] AS
    AVG(
        {[Date].[Calendar Year].CURRENTMEMBER.CHILDREN}, //[Date].[Calendar].[Month].MEMBERS
        [Measures].[Reseller Sales Amount])
SELECT
    {[Measures].[Avg Yearly Reseller Sales Amount],
    [Measures].[AvgOfChildren]} ON 0,
    {[Geography].[Geography].[Country].MEMBERS} ON 1
FROM [Adventure Works]

3 个答案:

答案 0 :(得分:1)

我认为您没有使用正确的层次结构来获得您期望的答案。

您在AvgOfChildren计算中要求[日期]。[日历年] .currentmember.children,但我认为您打算使用[日期]。 [日历] 。[日历年]。 currentmember.children。

[日期]。[日历年]层次结构是为日历年属性创建的层次结构。 [日期]。[日历]层次结构是用户定义的层次结构,其中许多级别可能看起来像日历年 - >日历季度 - >月 - >日期。当你在这个层次结构中要求日历年的孩子时,你应该期望答案是不同的,因为它使用了四分之一(或者你所拥有的任何东西作为日历年的水平)。

答案 1 :(得分:1)

您没有[日期]。[日历年] .CurrentMember已定义。行中的[日期]维度没有提及。

请改为尝试:

WITH MEMBER [Measures].[Avg Yearly Reseller Sales Amount] AS
    AVG(
        {[Date].[Calendar].[Calendar Year].MEMBERS},
        [Measures].[Reseller Sales Amount])
MEMBER [Measures].[AvgOfChildren] AS
    AVG(
        {[Date].[Calendar Year].CURRENTMEMBER.CHILDREN}, //[Date].[Calendar].[Month].MEMBERS
        [Measures].[Reseller Sales Amount])
SELECT
    {[Measures].[Avg Yearly Reseller Sales Amount],
    [Measures].[AvgOfChildren]} ON 0,
    {[Geography].[Geography].[Country].MEMBERS} * [Date].[Calendar].[Calendar Year].MEMBERS ON 1
FROM [Adventure Works]

第一列将为您提供年平均值(所有年份的相同值),第二列将为您提供一年中孩子的平均值。

答案 2 :(得分:1)

您的语句不包含[Date].[Calendar Year]层次结构的任何设置,既不包含WHERE条件,也不包含行。这意味着CurrentMember具有默认值,即“所有成员”,在这种情况下命名为All Periods

您可以通过添加其他计算成员来验证这一点

Measures.CurrentYear as [Date].[Calendar Year].CURRENTMEMBER.NAME

并将其添加到您的列中。