我在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
我的立方体有一个街道/发布日期层次结构,这是我的财政日期层次结构的镜子。它可以在Whate子句中的一天中查询一个稍微更改的查询来提取正确的值。
以下查询返回值,但由于我认为后代呼叫无法正常工作,因此有些不正确。
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-AD-DAY层次结构"已出现在Axis1轴上。"并且不确定如何解决。
感谢有关我出错的任何建议/指导。
事实证明不需要链接,最终通过使用过滤器/属性函数的MSDN找到解决方案:
在计算中设置迭代
解决方案涉及一个成员,该成员迭代一个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]
)