如何在MDX语句中重用已创建的成员?

时间:2016-07-14 23:22:22

标签: mdx

我有一堆我需要创建的计算成员,这些成员是在一个日期之后引用的。

不是重复获取测量将基于的日期成员的MDX,而是有一种方法可以在开始时创建日期成员,然后在整个过程中引用它,这样我就不必重复MDX多次?我在想类似下面的东西,但它返回一个NULL:

  WITH MEMBER [Date].[Retail].[Closing Date] AS
IIF (
  [Date].[Retail].CurrentMember.Level.Name = 'Date',
  [Date].[Retail].CurrentMember.PrevMember,
  [Date].[Retail].CurrentMember
)
MEMBER [Measures].[Closing New] AS
(
  [Date].[Retail].[Closing Date],
  [Measures].[On Hand Quantity]
)
SELECT
  [Date].[Retail].[Date].Members ON ROWS,
  {
    [Measures].[On Hand Quantity],
    [Measures].[Closing New]
  } ON COLUMNS
FROM
  Retail
WHERE
  [Date].[Retail Year].&[2017]

如上所述,我想多次使用Closing Date成员进行各种计算。

2 个答案:

答案 0 :(得分:0)

要调查它返回null的原因,请尝试以下操作,看看它是否符合您的预期:

WITH 
MEMBER [Measures].[nm] AS
  [Date].[Retail].CurrentMember.Level.Name
SELECT
  {
    [Measures].[On Hand Quantity],
    [Measures].[nm]
  } ON 0,
  [Date].[Retail].[Date].Members ON 1
FROM Retail
WHERE [Date].[Retail Year].&[2017];

(我还在SELECT子句中切换了声明顺序,因为声明列是标准的,因为它是轴0,首先是行)

答案 1 :(得分:0)

为什么是的,有!

我在这里遵循的模式是创建一个成员的集合,然后引用该集合的第一个项目。

with set currentDate as
[Date].[Retail].[Date].&[20160725]

然后在查询的其余部分中将其引用为

currentDate.item(0)