【问题标题】:MDX YTD Calculated Member for current and parallel period当前和并行期间的 MDX YTD 计算成员
【发布时间】:2015-04-17 02:36:22
【问题描述】:

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

为了帮助我们的用户在仪表板上进行分析,我们希望构建一个 Tableau 集,其中包括以下成员供他们切换: 昨天、本周至今、本月至今、季节至今和年初至今。

我们需要能够同时显示 Sales $ 和 Sales $ LY(度量被定义为并行期间),并且能够在不同的“迄今为止”值之间切换。今年的部分很好,但是创建一个适用于 LY 度量的计算成员也是有问题的。我们需要能够在仪表板的各个时期之间进行切换,而不是为每个时期 TY 和 LY 创建单独的度量。

以下是我们现有的定义:

昨天: [DATE].[Time].defaultmember

WTD: [DATE].[Time].defaultmember.parent

MTD: [DATE].[Time].defaultmember.parent.parent

STD: [DATE].[Time].defaultmember.parent.parent.parent

年初至今: [DATE].[Time].defaultmember.parent.parent.parent.parent

关于如何修改这些以使 LY 度量反映相同的“迄今为止”时期而不是去年的整个时期有什么想法吗?

【问题讨论】:

  • 如果在行单元格上显示 2006 年 1 月 10 日,那么您希望在其旁边的单元格中聚合(2007 年 1 月 1 日 - 2007 年 1 月 10 日)?
  • 我的回答有帮助吗?

标签: mdx tableau-api


【解决方案1】:

计算今年完成的天数,然后使用 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 帮助器维度中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多