如何根据日期属性过滤mdx中的新客户端?

时间:2016-05-07 10:43:49

标签: attributes filtering mdx

我是MDX的新手,我想从Client-dimension过滤所有新客户端,显示他们的交易数量。我使用下面的代码。语法上还可以返回我正在搜索的1931个客户端,但它返回一个空集。

select 
    {[Measures].[Transaction Count]} on columns
,   filter([Client].[Client ID],[Client].[Date Birth] >= '2016-01-01') on rows 
from [Transactions];

您的第二个查询如下:

SELECT 
  NON EMPTY { [Measures].[Transaction Count] } ON COLUMNS
, NON EMPTY { ([Client].[Client ID].[Client ID].ALLMEMBERS ) } 
    DIMENSION PROPERTIES 
       MEMBER_CAPTION
     , MEMBER_UNIQUE_NAME ON ROWS 
 FROM ( 
    SELECT 
     ( Filter( 
         [Client].[Date Birth].[Date Birth].ALLMEMBERS
       , Instr( [Client].[Date Birth].currentmember.Properties( 'Member_Caption' ), '2016' ) = 1 ) ) ON COLUMNS 
    FROM [DW3_Summary]
 ) 
  CELL PROPERTIES VALUE

1 个答案:

答案 0 :(得分:0)

这是问题[Client].[Date Birth] >= '2016-01-01',因为您在运算符>=的左侧有一个成员类型,而在右侧有一个日期类型。

我认为您可以创建一个度量,它是Date Birth层次结构的值,然后尝试对其进行过滤:

WITH MEMBER [Measures].[DateBirthValue] AS
  [Client].[Date Birth].CURRENTMEMBER.MEMBERVALUE
SELECT 
    [Measures].[Transaction Count] ON 0
,   FILTER(
       [Client].[Client ID].MEMBERS
      ,[Measures].[DateBirthValue] >= '2016-01-01'
    ) ON 1
FROM [Transactions];

不幸的是我没有访问AdvWrks多维数据集来测试上面的内容,所以手指交叉!

SELECT 
  NON EMPTY [Measures].[Transaction Count] ON 0
, NON EMPTY [Client].[Client ID].[Client ID].ALLMEMBERS 
    ON ROWS 
 FROM 
   ( 
    SELECT 
         [Client].[Date Birth].[Date Birth].&[2016-01-01] 
        :
         NULL 
       ON 0 
    FROM [DW3_Summary]
   );