Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
2 years ago
Solved

Incorrect Measure Total on Matrix Visual

Hi,

 

I have the following the following report page with a date slicer and a table.

 

- The date slicer comes from a date table that DOES NOT have a relationship with my facts table. 

-The "Max" date in the date slicer is used for the "Calculation" measure (DAX below), which essentially is a SWITCH Function that handles the following conditions.

 

1) If "End Date" <= "Max" date in the date slicer then return the full value of "Dollars"
2) If "Start Date" = "Max" date in the date slicer then return daily rate of "Dollars" (Dollars / (End Date - Start Date)

3) If "End Date" > "Max" date in the date slicer then return the daily rate * ("Max" date in the date slicer - Start Date)

 

Calculation Dax

 SWITCH(
                TRUE(),
                MAX('Fact Table'[End Date]) <= MAX('3.dim_date_table'[Date]),
                SUM('Fact Table'[Dollars]),
                MAX('Fact Table'[Start Date]) = MAX('3.dim_date_table'[Date]),
                DIVIDE(SUM('Fact Table'[Dollars]),(DATEDIFF(MAX('Fact Table'[Start Date]),MAX('Fact Table'[End Date]),DAY)),0),
                MAX('Fact Table'[End Date]) > MAX('3.dim_date_table'[Date]),
                DIVIDE(SUM('Fact Table'[Dollars]),(DATEDIFF(MAX('Fact Table'[Start Date]),MAX('Fact Table'[End Date]),DAY)),0)*DATEDIFF(MAX('Fact Table'[Start Date]),MAX('3.dim_date_table'[Date])+1,DAY)
                ,
                0
            )
 
On a row by row basis, everything appears to be working as expected. The only issue is that the total amount is not accuate.
 
For example in the screenshot below, we see that the Calculation total is $5,934.01 when it should be $6,319.61

 

I suspect this is due to the lack of row context when referring to the "Max" start and "end" dates for the total calculations, so the max values of the entire dataset are used rather than calculating row by row.


Here is a link to the pbix file: https://drive.google.com/drive/folders/1GjFTpaLMW-6vf36LFPpHR_IHuhtaAcPL?usp=sharing

 

Please let me know if any additional information is needed. Any input is appreciated. Thanks!


  • Anonymous's avatar
    Anonymous
    2 years ago

    Hi  Anonymous ,

     

    Thanks for the reply from DataNinja777 , please allow me to provide another insight:  

    You can using the following measure.

    Measure =
    SUMX(
        VALUES('Fact Table'[ID]),[Calculation])

     

    Best Regards,

    Liu Yang

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

3 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Thank you both! Appreciate the help

  • Hi Anonymous 

    You can get the correct total of the rows in the visual by using Sumx function.  Sumxing Calculation dax over the ID field will get you the correct total you are after. 

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi  Anonymous ,

     

    Thanks for the reply from DataNinja777 , please allow me to provide another insight:  

    You can using the following measure.

    Measure =
    SUMX(
        VALUES('Fact Table'[ID]),[Calculation])

     

    Best Regards,

    Liu Yang

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.