【问题标题】:MDX: Linkmember > Descendants offsets with currentmember contextMDX:Linkmember > 后代偏移量与当前成员上下文
【发布时间】:2018-03-28 04:40:46
【问题描述】:

我是在 MDX 中自学的,并且正在努力解决一个问题。

我需要能够根据发布日期前后的窗口隔离一组产品,然后根据当前行日期上下文计算它们的销售额。 “窗口”是一组街道日期,其中成员介于或等于 currentmember -27 和 currentmember + 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 轴中。”并且不确定如何解决。

感谢任何关于我哪里出错的建议/指导。

【问题讨论】:

    标签: mdx mdx-query


    【解决方案1】:

    原来不需要链接成员,最终通过 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]
      )
    

    【讨论】:

      猜你喜欢
      • 2020-11-21
      • 1970-01-01
      • 2013-11-12
      • 2013-03-09
      • 1970-01-01
      • 2011-08-02
      • 2019-03-14
      • 2020-06-19
      相关资源
      最近更新 更多