none
how to use the correct syntax for filter data with between or filter(). RRS feed

  • Frage

  • Hi,

    I defined the MDX command below. Without filtering the data on the [Customer Code] the mdx works fine. When i want to filter the customer code >= 400 and <= 499 the result set shows the customer 40 or 44 too.

    The customer code is a character field because we need also letters in the code.

    Who can help me?

    Thanks forward

    SELECT

    NON EMPTY {

          [Measures].[Total Sales],

          [Measures].[Total Sales Amount],

          [Measures].[Total Offers] } ON COLUMNS,

         

    NON EMPTY { (

          [Dim Customer].[ Customer Code].[ Customer Code].ALLMEMBERS *

          [Dim Customer].[ Customer Name].[ Customer Name].ALLMEMBERS *

          [Time].[Year -  Month -  Date].[Date].ALLMEMBERS ) }

         

    DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS

    FROM ( SELECT ( { [Time].[Year -  Month -  Date].[Date].&[2012-01-01T00:00:00] :[Time].[Year -  Month -  Date].[Date].&[2012-02-01T00:00:00] } ) ON COLUMNS                  

     

    froM( SELECT ( { [Dim Customer].[ Customer Code].&[400] :

                      [Dim Customer].[ Customer Code].&[499] } ) ON COLUMNS

         

    FROM [Sales DW]))


    Freitag, 15. Februar 2013 16:48

Alle Antworten

  • When i want to filter the customer code >= 400 and <= 499 the result set shows the customer 40 or 44 too.

    Hallo,

    wenn Du auf den Bereich 400:499 filterst und auch Werte wie 40 & 44 erhälst, wird es daran liegen, das der Datentyp varchar ist und die Werte textuell und nicht numerisch verglichen werden; und als Text liegt nun mal z.B. 44 zwichen 400:499.

    Ja nachdem wie das Dimensionsattribut definiert ist, kannst Du auch eine abweichende Sortierung definieren, z.B. wenn der Wert auch noch als zusätzlicher numerischer Wert vorliegt.


    Olaf Helper

    Blog Xing

    Mittwoch, 20. Februar 2013 06:39
  • Hallo Olaf,

    vielen Dank für Deine Bemühungen. Wie oben beschrieben ist mir klar, dass das eigentliche Problem am Characterfeld selbst liegt. Ich hatte die Hoffnung, dass jemand ein ähnliches Problem hatte und einen Art workaround hat. Im SQL konnte ich mir mit der Funktion RIGHT() helfen.

    MDX ist für mich komplett neu, die Lektüren und Internetbeiträge behandeln leider auch immer nur Standardabfragen, deshalb mein Versuch über ein Forum einen Tip zu bekommen.

    Danke

    Klaus

    Mittwoch, 20. Februar 2013 12:56
  • und einen Art workaround hat. Im SQL konnte ich mir mit der Funktion RIGHT() helfen.

    Hallo Klaus,

    natürlich gibt es immer Möglichkeiten, nur dazu müsste ich zunächst einmal wissen, wie die Dimension + Attribut grundlegend aussieht und vor allem, ob Du den Cube Design anpassen darfst und kannst.

    Du könntest in der Quell-Abfrage ein berechnetes Feld hinzufügen, das den Attribute-Wert numerisch zurück liefert (weil Du SQL / RIGHT ansprachst) und diese für die abweichende Sortierung des Attributes verwenden; oder gleich als Attributwert.


    Olaf Helper

    Blog Xing

    Mittwoch, 20. Februar 2013 19:40