MDX: Linkmember > Descendants offsets with currentmember 上下文
MDX: Linkmember > Descendants offsets with currentmember context
我在 MDX 中自学,并且正在努力解决一个问题。
我需要能够根据发布日期前后的 window 来隔离一组产品,然后根据当前行日期上下文计算它们的销售额。 'window' 是一组街道日期,其中 member 介于或等于 currentmember -27 和 currentmember + 7(正如我们有时看到的早期 sales/preshipping)。
最终输出应该类似于(前几天空白):
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
我的多维数据集有一个 street/release 日期层次结构,它是我的会计日期层次结构的镜像。它通过查看 where 子句中的一天的稍微改变的查询来提取正确的值。
以下查询 returns 值,但有些不正确,因为我认为后代调用无法正常工作。
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 轴,但我得到 'The Yr-Qtr-Mo-Wk-Day hierarchy already appears in the Axis1 axis.' 并且不确定如何解决。
感谢任何 advice/guidance 我出错的地方。
原来不需要 linkmember,最终通过 MSDN 找到了一个使用 filter/Properties 函数的解决方案:
解决方案涉及一个迭代 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]
)
我在 MDX 中自学,并且正在努力解决一个问题。
我需要能够根据发布日期前后的 window 来隔离一组产品,然后根据当前行日期上下文计算它们的销售额。 'window' 是一组街道日期,其中 member 介于或等于 currentmember -27 和 currentmember + 7(正如我们有时看到的早期 sales/preshipping)。
最终输出应该类似于(前几天空白):
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
我的多维数据集有一个 street/release 日期层次结构,它是我的会计日期层次结构的镜像。它通过查看 where 子句中的一天的稍微改变的查询来提取正确的值。
以下查询 returns 值,但有些不正确,因为我认为后代调用无法正常工作。
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 轴,但我得到 'The Yr-Qtr-Mo-Wk-Day hierarchy already appears in the Axis1 axis.' 并且不确定如何解决。
感谢任何 advice/guidance 我出错的地方。
原来不需要 linkmember,最终通过 MSDN 找到了一个使用 filter/Properties 函数的解决方案:
解决方案涉及一个迭代 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]
)