如何根据mdx

时间:2015-04-22 14:32:17

标签: ssas mdx

我有一个发件人和收件人维度,它们是员工物理表格中的角色扮演维度。 我的事实表有发件人,收件人,邮件列。 我希望将员工发送的消息发送给公司中的每个人,除非向他的经理报告。 我试过这样的事情

WITH 
  SET [Others] AS 
    Except
    (
      Ascendants([Recipient].[Manager])
     ,[Sender].[Manager].Parent
    ) 
SELECT 
  [OTHERS] ON COLUMNS
 ,{[Measures].[Messages]} ON ROWS
FROM [cube]
WHERE 
  [Sender].[Manager].&[xyz];

基本思想是......了解给定发件人的所有收件人,并过滤那些上升列表由发件人父母组成的人。

这不起作用,因为除了两个不同的维度层次结构之外,我无法做到这一点。

1 个答案:

答案 0 :(得分:1)

尝试通过关键字Set更多地了解EXSITING上下文,然后使用过滤器来比较member_caption

WITH 
  MEMBER [Measures].[SenderName] AS 
    [Sender].CurrentMember.Member_Caption 
  SET [ExistingRecip] AS 
    (EXISTING 
      [Recipient].[Manager].MEMBERS) 
  SET [Others] AS 
    Filter
    (
      [ExistingRecip]
     ,
        [ExistingRecip].Item(
        [ExistingRecip].CurrentOrdinal - 1).Member_Caption
      <> 
        [Measures].[SenderName]
    ) 
SELECT 
  [OTHERS] ON COLUMNS
 ,{[Measures].[Messages]} ON ROWS
FROM [cube]
WHERE 
  [Sender].[Manager].&[xyz];