2017-07-26 2 views
0

Ich bin total neu in MDX. Ich müsste alle Datensätze filtern, die Teilzeichenfolge "SBP1" enthalten. Es funktioniert für mich, wenn ich jeden Datensatz einzeln wie folgt eingeben: {[Article].[Article Alternative ID CPG].[SBP1 0],[Article].[Article Alternative ID CPG].[SBP1 1],[Article].[Article Alternative ID CPG].[SBP1 W]}MDX Builder - Filterung mit INSTR Funktion

MDX builder screenshot

Arbeitscode:

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; 

Wie könnte ich es effizienter mit instr Funktion? Ich habe versucht, dies funktioniert aber nicht:

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

Was auf meinem MDX statament falsch ist? MDX with my SELECT screenshot Danke

Antwort

0

Ich glaube, Sie könnten weit ein wenig befahren haben, wenn die CURRENTMEMBER Funktion anwenden. Versuchen Sie folgendes:

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

Hoffentlich Namen für Sie funktioniert, aber ich gehe in der Regel für 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

Vielen Dank für Ihre Antwort, aber es scheint immer noch falsch zu sein (Ich habe MEMBERCAPTION und aslo CurrentMember.Name versucht): SELECT [Measures]. [Wert] ON COLUMNS, Filter ([Artikel]. [Artikel Alternative ID CPG] [Artikel Alternative ID CPG] .ALLMEMBERS, Instr ([Artikel]. [Artikel Alternative ID CPG] .CurrentMember.MEMBERCAPTION, 'SBP1')> 0) ON ROWS VON [COLOR LEAN CPG]; – kabarto

+0

"Vielen Dank für Ihre Antwort, aber es scheint immer noch falsch zu sein" .... wenn meine Antwort so falsch war, wie kommt es dann, dass Sie in Ihrer Lösung "[Article Alternative ID CPG] .CurrentMember" verwendet haben? Versuchen Sie es mit Ihrer ursprünglichen Implementierung! (Das würde niemals funktionieren.) [Artikel Alternative ID CPG] [Artikel alternative ID CPG] .CurrentMember ') – whytheq

0

fand ich eine gültige MDX-Anweisung: 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)

Aber diese Lösung habe ich nicht weiß, Um zu einem reinen GUI MDX BUILDER zu transformieren, fügen Sie es dort ein.

+0

Das ist, was ich gesagt habe' Ich denke, Sie könnten ein wenig weit navigiert haben, wenn Sie die CURRENTMEMBER Funktion in anwenden meine Antwort ... es war das Hauptproblem mit deinem Skript – whytheq

+0

was bedeutet das? 'Aber diese Lösung, die ich nicht wusste, um rein zu GUI MDX BUILDER zu verwandeln, fügen Sie es dort ein.' – whytheq