Mdx查询显示除本年度以外的所有年份的年度级数据

Mdx查询显示除本年度以外的所有年份的年度级数据,mdx,Mdx,我有一个类似上面的问题。它在工作,它以月为单位返回2016年,其他年份以年为单位 现在我必须在这个mdx上添加更多的维度,但是当我尝试喜欢它时 SELECT NON EMPTY {[Measures].[AMOUNTCUR]} ON 0 ,NON EMPTY { NULL : [PRX_UE_DATE].[Calender].[Year].&[2015] ,[PRX_UE_DATE].[Calender].[Year].&[201

我有一个类似上面的问题。它在工作,它以月为单位返回2016年,其他年份以年为单位

现在我必须在这个mdx上添加更多的维度,但是当我尝试喜欢它时

SELECT 
  NON EMPTY 
    {[Measures].[AMOUNTCUR]} ON 0
 ,NON EMPTY 
    {
      NULL : [PRX_UE_DATE].[Calender].[Year].&[2015]
     ,[PRX_UE_DATE].[Calender].[Year].&[2017]
     ,Descendants
      (
        [PRX_UE_DATE].[Calender].[Year].&[2016]
       ,[PRX_UE_DATE].[Calender].[Month]
      )
    } ON 1
FROM [PRX_SalesDataModel];

我发现错误成员、元组或集合必须在函数中使用相同的层次结构

您只需将所有日期维度内容保留在大括号中
{…}

SELECT 
  NON EMPTY 
    {[Measures].[AMOUNTCUR]} ON 0
 ,NON EMPTY 
    {
      NULL : [PRX_UE_DATE].[Calender].[Year].&[2015]
     ,[PRX_UE_DATE].[Calender].[Year].&[2017]
     ,
        Descendants
        (
          [PRX_UE_DATE].[Calender].[Year].&[2016]
         ,[PRX_UE_DATE].[Calender].[Month]
        )
      * 
        [PRX UE CLIENT].[SEGMENTID].ALLMEMBERS
    } ON 1
FROM [PRX_SalesDataModel];
您甚至可以通过WITH子句将日期内容移动到命名集中,使其更具可读性:

SELECT 
  NON EMPTY 
    {[Measures].[AMOUNTCUR]} ON 0
 ,NON EMPTY 
    {
      NULL : [PRX_UE_DATE].[Calender].[Year].&[2015]
     ,[PRX_UE_DATE].[Calender].[Year].&[2017]
     ,
        Descendants
        (
          [PRX_UE_DATE].[Calender].[Year].&[2016]
         ,[PRX_UE_DATE].[Calender].[Month]
        ) 
     }
     * [PRX UE CLIENT].[SEGMENTID].ALLMEMBERS
     ON 1
FROM [PRX_SalesDataModel];

您已经从@whytheq获得了关于错误发生原因的答案。只有一部分我觉得还没有处理好。您正在手工创建一组年份。相反,它可以像下面那样动态化-

WITH SET [DatesSet] AS
    {
      NULL : [PRX_UE_DATE].[Calender].[Year].&[2015]
     ,[PRX_UE_DATE].[Calender].[Year].&[2017]
     ,
        Descendants
        (
          [PRX_UE_DATE].[Calender].[Year].&[2016]
         ,[PRX_UE_DATE].[Calender].[Month]
        ) 
     }
SELECT 
  NON EMPTY 
    {[Measures].[AMOUNTCUR]} ON 0
 ,NON EMPTY 
    [DatesSet]
     * [PRX UE CLIENT].[SEGMENTID].ALLMEMBERS
     ON 1
FROM [PRX_SalesDataModel];
将AllyearsCeptCurrent设置为
滤器(
[PRX_UE_日期].[Calendar].[Year]。成员为yr,
yr.current.item(0).member_值格式(现在为(),“yyyy”)
)

非常感谢。现在,我明白我的错误了。(升级)我喜欢这个-可能也是一个使用
子集
的不错的替代解决方案?嗯…这是一个我没有用太多的函数,但该死的是,它也可以使用..昨天,我遇到了我见过的最奇怪的MDX。你也来看看,告诉我它是否漂亮:)-使用函数
axis()
是另一个层次
with set AllYearsExceptCurrent as
filter(
       [PRX_UE_DATE].[Calender].[Year].members as yr,
       yr.current.item(0).member_value <> Format(Now(), "yyyy")
      )