Forum Discussion

Usagi_Nakamura's avatar
5 years ago
Solved

Dax query returns unexpected result

Hi everyone,   I have a pbix file ContosoSales-Excerpt.pbix being only 'Product' table of Contoso Sales sample. Then I made a Dax query by Dax Studio which calculates cumulative total of ‘Product’ ...
  • Payeras_BI's avatar
    Payeras_BI
    5 years ago

    Hi Usagi_Nakamura ,

     

    Answering to your last question:

     

    Not that I am sure this is Auto-Exist anymore but in the example above, where you exchanged Product[UnitPrice] by Sales[UnitPrice] you were still having all the ingredients to trigger it according to this:

     

    https://docs.microsoft.com/en-us/dax/all-function-dax


    "An example where auto-exist and ALL() provide unexpected results is when filtering on two or more columns of the same table (like when using slicers), and there is a measure on that same table that uses ALL()."

     

    In your last example ProductSubcategoryKey (ALL), ClassName and BrandName (SLICERS) are still from the same table. Now, while moving ClassName and BrandName to a different table could sort out the issue, we still want to learn why this is happening.

     

    I leave it to the experts, but hoping this is of any help, I reproduced the scenario in PBI with the simplest table possible (just two rows, only one brand/class and no duplicates) to rule out possible causes:

     

     

    The measure that breaks:

     

     

    SUMX = 
    VAR CurrentKey = SELECTEDVALUE('Table'[Key])
    RETURN
    SUMX(
        FILTER(
            ALL('Table'[Key]);
            'Table'[Key]<CurrentKey
        );
        [Sum of UnitPrice]
    )

     

     

    A measure that works: 

     

     

    With Calculate = 
    VAR CurrentKey = SELECTEDVALUE('Table'[Key])
    RETURN
    CALCULATE(
        [Sum of UnitPrice];
        'Table'[Key]<CurrentKey
    )

     

     

    In PBI:

     

    - A Table visualization with only one of the columns used to slice shown:

     

     

    - Ok to slice by the one not present in the visualization:

     

     

    - But as soon you slice by both of them the measure with SUMX breaks:

     

     

    Regards,