Search code examples
typesmdxmismatch

MDX: Invalid procedure call or argument when substracting


I am struggling with the following statement:

    WITH MEMBER [Measures].[Diff Geo Volumen Artikelnummer] as 

[D_Artikel].[Geo Max Volumen Artikelnummer].CurrentMember.Member_Value- --remark1
[D_Artikel].[Geo Min Volumen Artikelnummer].CurrentMember.Member_Value



SELECT non empty 
{[Measures].[Menge_Artikel_Stk], [Measures].[Diff Geo Volumen Artikelnummer]} on 0,

NON EMPTY 
crossjoin(
filter([D_Artikel].[Artikelnummer].[Artikelnummer],[Measures].[Diff Geo Volumen Artikelnummer]>0) , -- remark2
[D_Artikel].[Geo Max Volumen Artikelnummer].[Geo Max Volumen Artikelnummer],
[D_Artikel].[Geo Min Volumen Artikelnummer].[Geo Min Volumen Artikelnummer])
on 1 
FROM [Tag_PL_Bestand_Cube_TM] 
WHERE ([D_Datum].[Datum].[Tag].&[2017-06-06T00:00:00])

Members of Dimension

1) remark1: The calculation works when replacing the substraction with an addition. Why? 2) remark2: The substraction works when not using the filter function...

Unfortunately, I want to filter and substract... Eventually I want to use Excel Pivot to access the data and create the new measure in Excel.

The error message says: Executing the query ... Query (3, 1) Typenkonflikt beim Subtract-Operator. Systemfehler: Invalid procedure call or argument Run complete

*Typenkonflikt = type mismatch

Instead of the Member_Value I have also tried .Value and .MemberValue


Solution

  • This tells you line 3 is at fault: Query (3, 1)

    Comments in mdx are ignored using // not like sql --

    This should function better:

    WITH MEMBER [Measures].[Diff Geo Volumen Artikelnummer] as 
      //remark1
      [D_Artikel].[Geo Max Volumen Artikelnummer].CurrentMember.Member_Value- 
      [D_Artikel].[Geo Min Volumen Artikelnummer].CurrentMember.Member_Value
    ...
    ...