会员资产的最大价值

时间:2014-12-02 09:25:42

标签: max ssas mdx

我需要获取要在另一个MDX表达式中使用的成员属性的最大值。

作为Adventure Works的一个例子,我正在使用以下

 WITH 
  MEMBER DoFP AS 
    [Customer].[Customer].Properties("Date of First Purchase") 
  MEMBER MaxDoFP AS 
    Tail
    (
      NonEmpty
      (
        [Date].[Date].[Date]
       ,[Measures].[DoFP]
      )
     ,1
    ).Item(0).MemberValue 
SELECT 
  [Date].[Calendar Year].[Calendar Year] ON 0
 ,{
    [Customer].[Customer].&[20075]
   ,[Customer].[Customer].&[15568]
   ,[Customer].[Customer].&[20285]
  } ON 1
FROM [Adventure works]
WHERE 
  [Measures].[DoFP];

我希望它能在2008年6月15日之前返回所有行/列,这是Aaron Alexander首次购买的日期(他们选择了最大的DoFP),以便我可以做更多的计算。相反,它给了我2010年12月31日,因为(我假设)这是我[日期]中的最后一个日期。[日期]。[日期]。

2 个答案:

答案 0 :(得分:0)

不漂亮:

WITH 
  SET X AS 
    {
      [Customer].[Customer].&[20075]
     ,[Customer].[Customer].&[15568]
     ,[Customer].[Customer].&[20285]
    } 
  MEMBER DoFP AS 
    [Customer].[Customer].Properties("Date of First Purchase") 
  MEMBER MaxDoFP1 AS 
    Max(DoFP) 
  MEMBER MaxDoFP2 AS 
    Max
    (
      X
     ,Cdate([Customer].[Customer].Properties("Date of First Purchase"))
    ) 
SELECT 
  [Date].[Calendar Year].[Calendar Year] ON 0
 ,
  X * {[Measures].[MaxDoFP1],[Measures].[MaxDoFP2]} ON 1
FROM [Adventure works];

答案 1 :(得分:0)

另一个选项(假设您能够扩展多维数据集结构)将使用MAX聚合函数基于客户维度创建度量值组。我认为对于较大的套装,性能会好一些。

WITH 
  SET X AS 
    {
      [Customer].[Customer].&[20075]
     ,[Customer].[Customer].&[15568]
     ,[Customer].[Customer].&[20285]
    } 
  MEMBER MaxDoFP AS 
    Max (X,[Measures].[Customer DoFP MAX]) 
SELECT 
  [Date].[Calendar Year].[Calendar Year] ON 0
 ,X * {[Measures].[MaxDoFP]} ON 1
FROM [Adventure works];