MDX YTD计算当前和并行期间的成员

时间:2015-04-17 02:36:23

标签: mdx tableau

尝试使用我们的日期层次结构构建计算成员,以便在Tableau中使用 层次结构如下:
财政年度 财政年度
财政季度 财政月
财政周期 日期

为了帮助我们的用户在仪表板上进行分析,我们正在寻找构建包含以下成员的Tableau集,以便他们切换: 昨天,周至今,月初至今,季节至今,以及年初至今。

我们需要能够一起显示Sales $和Sales $ LY(度量被定义为平行期),并且能够切换到不同的"到期日"值。今年的部分很好,但创建一个适合LY措施的计算成员也是有问题的。我们需要能够在仪表板的周期之间进行转换,而不是为每个周期TY和LY创建单独的度量。

以下是我们目前的定义:

  

昨天: [日期]。[时间]。默认会员

     

WTD: [日期]。[时间] .defaultmember.parent

     

MTD: [日期]。[时间] .defaultmember.parent.parent

     

STD: [日期]。[时间] .defaultmember.parent.parent.parent

     

YTD: [日期]。[时间] .defaultmember.parent.parent.parent.parent

有关如何修改这些内容的任何想法,以便LY度量反映相同的"到目前为止#34;期间而不是去年的整个期间?

1 个答案:

答案 0 :(得分:0)

计算今年完成的天数,然后使用Head函数获取与上一年相同的日期集合 - 汇总设​​置在一起。

以下是针对AdvWrks多维数据集的插图:

WITH 
  SET [DaysThisYear] AS 
    Descendants
    (
      [Date].[Calendar].[Calendar Year].&[2007]
     ,[Date].[Calendar].[Date]
    ) 
  MEMBER [Measures].[posOfCurrentDate] AS 
    Rank
    (
      [Date].[Calendar].CurrentMember
     ,Descendants
      (
        [Date].[Calendar].Parent.Parent.Parent.Parent
       ,[Date].[Calendar].[Date]
      )
    ) 
  MEMBER [Measures].[prevEquivMTD] AS 
    Sum
    (
      Head
      (
        Descendants
        (
          [Date].[Calendar].Parent.Parent.Parent.Parent.PrevMember
         ,[Date].[Calendar].[Date]
        )
       ,[Measures].[posOfCurrentDate]
      )
     ,[Measures].[Internet Sales Amount]
    ) 
  MEMBER [Measures].[posCurrentYear] AS 
    [Date].[Calendar].Parent.Parent.Parent.Parent.Member_Caption 
SELECT 
  {
    [Measures].[posCurrentYear]
   ,[Measures].[posOfCurrentDate]
   ,[Measures].[Internet Sales Amount]
   ,[Measures].[prevEquivMTD]
  } ON 0
 ,
    [Date].[Calendar].[Date].&[20050111]
  : 
    [Date].[Calendar].[Date].&[20080611] ON 1
FROM [Adventure Works];

以上是单一措施:

WITH 
  MEMBER [Measures].[Internet Sales Amount prevEquivMTD] AS 
    Sum
    (
      Head
      (
        Descendants
        (
          [Date].[Calendar].Parent.Parent.Parent.Parent.PrevMember //previous year
         ,[Date].[Calendar].[Date]
        )
       ,Rank
        (
          [Date].[Calendar].CurrentMember
         ,Descendants
          (
            [Date].[Calendar].Parent.Parent.Parent.Parent //current year
           ,[Date].[Calendar].[Date]
          )
        )
      )
     ,[Measures].[Internet Sales Amount]
    ) 
SELECT 
  {
    [Measures].[Internet Sales Amount]
   ,[Measures].[Internet Sales Amount prevEquivMTD]
  } ON 0
 ,
    [Date].[Calendar].[Date].&[20050111]
  : 
    [Date].[Calendar].[Date].&[20080611] ON 1
FROM [Adventure Works];

不幸的是,它与度量Internet Sales Amount相关联,因此不是非常通用。通用计算(例如prev equiv mtdYear on Year growth)通常会添加到独立于日期维度的辅助Time Caculation辅助维度中。