2017-07-26 2 views
0

Je suis totalement nouveau dans MDX. Je devrais filtrer tous les enregistrements contenant la sous-chaîne "SBP1". Il fonctionne pour moi quand je rentre chaque enregistrement séparément comme ceci: {[Article].[Article Alternative ID CPG].[SBP1 0],[Article].[Article Alternative ID CPG].[SBP1 1],[Article].[Article Alternative ID CPG].[SBP1 W]}MDX Builder - filtrage avec fonction INSTR

MDX builder screenshot

Code de travail:

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; 

Comment pourrais-je le faire plus efficace avec la fonction instr? J'ai essayé cela, mais ne fonctionne pas:

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]; 

Qu'est-ce qui ne va pas sur mon MDX statament? MDX with my SELECT screenshot Merci

Répondre

0

je pense que vous pourriez avoir navigué un peu loin lors de l'application de la fonction CURRENTMEMBER. Essayez ceci:

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]; 

nom Espérons que fonctionne pour vous, mais je vais habituellement pour 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

Merci pour votre réponse, mais il semble encore se tromper (j'ai essayé MEMBERCAPTION et aussi CurrentMember.Name): SELECT [Mesures]. [Valeur] SUR COLONNES, Filtre ([Article]. [Article Autre ID CPG] [Article Alternative ID CPG] .ALLMEMBERS, Instrument ([Article]. [Article Autre nom CPG] .CurrentMember.MEMBERCAPTION, 'SBP1')> 0) ON ROWS DE [COLOR LEAN CPG]; – kabarto

+0

"Merci pour votre réponse, mais il semble encore se tromper" .... si ma réponse était si fausse alors comment se fait-il dans votre solution que vous avez utilisé "[Article]. [Article Alternative CPG] .CurrentMember"? Essayez de le faire avec votre implémentation originale! (ceci ne fonctionnerait jamais '' [article]. [Article Alternative CPG] [Article Alternative CPG]. CurrentMember') – whytheq

0

J'ai trouvé une instruction MDX valide: 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)

Mais cette solution je ne savais pas pour transformer à pure GUI MDX BUILDER un insérer là.

+0

Voici ce que j'ai dit 'Je pense que vous avez peut-être navigué un peu plus loin en appliquant la fonction CURRENTMEMBER' ma réponse ... c'était le problème principal avec votre script – whytheq

+0

qu'est-ce que cela signifie? 'Mais cette solution, je ne savais pas à transformer en pure GUI MDX BUILDER un insert là. – whytheq