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

时间:2016-06-06 21:14:32

标签: 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];

我有一个像上面这样的查询。它正在工作它以月为基础返回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]
        )
      * 
        [PRX UE CLIENT].[SEGMENTID].ALLMEMBERS
    } ON 1
FROM [PRX_SalesDataModel];

我得到错误成员,元组或集必须在函数中使用相同的层次结构。

2 个答案:

答案 0 :(得分:1)

您只需要将所有日期维度内容保留在设置大括号{...}中:

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子句将日期内容移动到命名集中来使其更具可读性:

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];

答案 1 :(得分:1)

你已经从@whytheq得到了关于错误出现的原因。只有一部分我认为尚未处理。您正在手工构建这些年份。而不是那样,它可以像下面一样动态 -

with set AllYearsExceptCurrent as
filter(
       [PRX_UE_DATE].[Calender].[Year].members as yr,
       yr.current.item(0).member_value <> Format(Now(), "yyyy")
      )