2017-07-26 79 views
0

我是MDX中的新手。我需要过滤所有包含子字符串“SBP1”的记录。这对我的作品时,我分别输入每个记录是这样的: {[Article].[Article Alternative ID CPG].[SBP1 0],[Article].[Article Alternative ID CPG].[SBP1 1],[Article].[Article Alternative ID CPG].[SBP1 W]}MDX Builder - 使用INSTR功能进行过滤

MDX builder screenshot

工作代码:

SELECT 
    NON EMPTY 
    {[Measures].[Value]} ON COLUMNS 
,NON EMPTY 
    { 
     [Article].[Article Alternative ID CPG].[Article Alternative ID CPG].ALLMEMBERS* 
     [Article].[Market].[Market].ALLMEMBERS* 
     [Article].[Brand].[Brand].ALLMEMBERS* 
     [Article].[Product].[Product].ALLMEMBERS 
    } 
    DIMENSION PROPERTIES 
    MEMBER_CAPTION 
    ,MEMBER_UNIQUE_NAME 
    ON ROWS 
FROM 
(
    SELECT 
    { 
     [Article].[Article Alternative ID CPG].[SBP1 0] 
    ,[Article].[Article Alternative ID CPG].[SBP1 1] 
    ,[Article].[Article Alternative ID CPG].[SBP1 W] 
    } ON COLUMNS 
    FROM 
    (
    SELECT 
     {[Measure Data Type].[Data Type].[Actuals]} ON COLUMNS 
    FROM 
    (
     SELECT 
     {[Org Sales Area].[Sales Organization Key].[DEB1]} ON COLUMNS 
     FROM 
     (
     SELECT 
      {[Org Sales Area].[Distribution Channel].&[DO]} ON COLUMNS 
     FROM 
     (
      SELECT 
      {[Org Business Unit].[Business Unit].[U-K]} ON COLUMNS 
      FROM 
      (
      SELECT 
       {[Measure Item].[Measure Item].&[KF00310]} ON COLUMNS 
      FROM 
      (
       SELECT 
       {[Date of Posting].[Posting Y Q M D].[Posting Year].&[2017]} ON COLUMNS 
       FROM [COLOR LEAN CPG] 
      ) 
     ) 
     ) 
    ) 
    ) 
) 
) 
WHERE 
    (
    [Date of Posting].[Posting Y Q M D].[Posting Year].&[2017] 
    ,[Measure Item].[Measure Item].&[KF00310] 
    ,[Org Business Unit].[Business Unit].[U-K] 
    ,[Org Sales Area].[Distribution Channel].&[DO] 
    ,[Org Sales Area].[Sales Organization Key].[DEB1] 
    ,[Measure Data Type].[Data Type].[Actuals] 
) 
CELL PROPERTIES 
    VALUE 
,BACK_COLOR 
,FORE_COLOR 
,FORMATTED_VALUE 
,FORMAT_STRING 
,FONT_NAME 
,FONT_SIZE 
,FONT_FLAG; 

我怎么能做到这一点与InStr函数更有效率? 我试过,但不起作用:

SELECT 
    [Measures].[Value] ON COLUMNS 
,Filter 
    (
    [Article].[Article Alternative ID CPG].[Article Alternative ID CPG].ALLMEMBERS 
    , 
     Instr 
     (
     [Article].[Article Alternative ID CPG].[Article Alternative ID CPG].CurrentMember.Name 
     ,'SBP1' 
    ) 
    > 0 
) ON ROWS 
FROM [COLOR LEAN CPG]; 

有什么不对我的MDX statament? MDX with my SELECT screenshot 谢谢

回答

0

我认为应用CURRENTMEMBER功能时,你可能已经远远导航一点点。试试这个:

SELECT 
    [Measures].[Value] ON COLUMNS 
,Filter 
    (
    [Article].[Article Alternative ID CPG].[Article Alternative ID CPG].ALLMEMBERS 
    , 
     Instr 
     (
     [Article].[Article Alternative ID CPG].CurrentMember.Name //<<[Article].[Article Alternative ID CPG].[Article Alternative ID CPG].CurrentMember.Name 
     ,'SBP1' 
    ) 
    > 0 
) ON ROWS 
FROM [COLOR LEAN CPG]; 

希望名字对你的作品,但我通常去MEMBERCAPTION

SELECT 
    [Measures].[Value] ON COLUMNS 
,Filter 
    (
    [Article].[Article Alternative ID CPG].[Article Alternative ID CPG].ALLMEMBERS 
    , 
     Instr 
     (
     [Article].[Article Alternative ID CPG].CurrentMember.MEMBERCAPTION 
     ,'SBP1' 
    ) 
    > 0 
) ON ROWS 
FROM [COLOR LEAN CPG]; 
+0

谢谢您的回复,但它似乎仍然是错误的(我试过MEMBERCAPTION和CurrentMember.Name):SELECT [Measures]。[Value] ON COLUMNS, Filter([Article]。[Article Alternative ID CPG] [文章备选ID CPG] .ALLMEMBERS, Instr([Article Article。[Article Alternative ID CPG] .CurrentMember.MEMBERCAPTION,'SBP1')> 0)ON ROWS FROM [COLOUR LEAN CPG]; – kabarto

+0

“谢谢你的回复,但它似乎仍然是错误的......”如果我的回答太错误,那么你的解决方案如何使用“[文章] [文章替代ID CPG] .CurrentMember”?尝试与您的原始实施! (这不会起作用)[文章] [文章替代ID CPG] [文章替代ID CPG] .CurrentMember') – whytheq

0

我找到了一个有效的MDX语句: Filter([Article].[Main Article Alternative ID CPG].[Main Article Alternative ID CPG].ALLMEMBERS,Instr([Article].[Main Article Alternative ID CPG].currentmember.Properties('Member_Caption'), 'SBP1') > 0)

但是这种解决方案我不知道转换到纯粹的GUI MDX BUILDER中插入它。

+0

这就是我说'我认为你可能导航了一点点,当应用CURRENTMEMBER函数'在我的回答...这是你的脚本 – whytheq

+0

的主要问题这是什么意思? '但是这个解决方案我不知道要转换成纯粹的GUI MDX BUILDER插入它。“ – whytheq