如果我运行以下命令,则两个自定义度量将返回相同的结果。为什么[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]
答案 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
并将其添加到您的列中。