MDX:链接成员>后代与当前成员上下文抵消

时间:2018-03-28 04:40:47

标签: mdx mdx-query

我在MDX自学,并且正在努力解决问题。

我需要能够根据发布日期的窗口隔离一组产品,然后按当前行日期上下文计算销售额。 “窗口”是一组街道日期,其中成员介于或等于当前成员-27和当前成员+7(因为我们有时会看到早期销售/预先出货)。

最终输出应该类似于(前方空白):

            NR Sales
2018-03-25  117.12
2018-03-26  130.01
2018-03-27  2,827.63
2018-03-28  
2018-03-29  
2018-03-30  
2018-03-31  

我的多维数据集具有街道/发布日期层次结构,它是我的会计日期层次结构的镜像。它使用稍微改变的查询来提取正确的值,查看where子句中的一天。

以下查询返回值,但稍微不正确,因为我认为后代调用无法正常工作。

WITH 
SET [StreetDateSet] AS 
  LinkMember
  (
    Descendants
    (
      [Date].[Yr-Qtr-Mo-Wk-Day].CurrentMember
     ,[Date].[Yr-Qtr-Mo-Wk-Day].[Day]
    ).Item(0)
   ,[Street Date].[StreetDate-Yr-Mo-Wk-Dy]
  ).Lag(27)
: 
  LinkMember
  (
    Descendants
    (
      [Date].[Yr-Qtr-Mo-Wk-Day].CurrentMember
     ,[Date].[Yr-Qtr-Mo-Wk-Day].[Day]
    ).Item(0)
   ,[Street Date].[StreetDate-Yr-Mo-Wk-Dy]
  ).Lag(-7) 
MEMBER [NR Sales] AS 
Sum
(
  [StreetDateSet]
 ,[Measures].[Sales Value]
) 
SELECT 
  NON EMPTY 
[NR Sales] ON 0
,[Date].[Date].Children ON 1
FROM [CUBE]
WHERE 
(
[Date].[Yr-Qtr-Mo-Wk-Day].[Week].&[2018]&[2]&[4]
,[Item].[New Used].[New]
,{
  [Item].[Category Code].[220]
 ,[Item].[Category Code].[230]
 ,[Item].[Category Code].[210]
}
); 

我怀疑这里有一些问题,但我不确定如何解决它们。后代可能受到where子句中的日期层次结构的影响。我试图让它进入1轴,但我得到'Yr-Qtr-Mo-Wk-Day层次结构已经出现在Axis1轴上。'我不确定如何解决。

感谢您对我出错的地方提供任何建议/指导。

1 个答案:

答案 0 :(得分:0)

原来不需要linkmember,最终通过使用过滤器/属性函数的MSDN找到解决方案:

Set iteration in calculation

解决方案涉及一个迭代NULL * CurrentMember定义集的成员,我稍微采用该语句生成一个匹配互补层次结构的动态集。

WITH 
MEMBER [Measures].[SameDay] AS 
  NULL * Count([Date].[Yr-Mo-Wk-Day].CurrentMember AS MySet)
+ 
  Sum
  (
    {
        Filter
        (
          [Street Date].[StreetDate-Yr-Mo-Wk-Dy].MEMBERS AS MySet2
         ,
          MySet2.Current.Properties("Key") = MySet.Item(0).Properties("Key")
        ).Item(0).Lag(28)
      : 
        Filter
        (
          [Street Date].[StreetDate-Yr-Mo-Wk-Dy].MEMBERS AS MySet2
         ,
          MySet2.Current.Properties("Key") = MySet.Item(0).Properties("Key")
        ).Item(0).Lead(7)
    }
   ,[Measures].[Sales Value]
  )