Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

weighted average date

Hi,

 

I'm working with a sales table that has three main columns: Amount sold; day sold; and day payed. I'd like to know what is the average days that I take between sell a product and be payed, but I would like as well to do a weighted average.

 

It was supposed to be something like this: SUMX( (Amount Sold) * (Day payed - day sold) / (Total Amount sold).

 

How can I do a measure that return me directly this result?

  • Hi Anonymous 

    Yes, that's exactly the idea.

     

    In DAX, I would write something like this:

     

    Average days sold-paid =
    VAR TotalAmountSold =
        SUM ( Sales[Amount Sold] )
    RETURN
        DIVIDE (
            SUMX ( Sales, ( Sales[Day Paid] - Sales[Day Sold] ) * Sales[Amount Sold] ),
            TotalAmountSold
        )

     

    Another version that could improve performance depending on distribution of your dates, especially if you have the same pairs of dates occurring repeatedly:

    Average days sold-paid =
    VAR TotalAmountSold =
        SUM ( Sales[Amount Sold] )
    RETURN
        DIVIDE (
            SUMX (
                SUMMARIZE ( Sales, Sales[Day Paid], Sales[Day Sold] ),
                ( Sales[Day Paid] - Sales[Day Sold] )
                    * CALCULATE ( SUM ( Sales[Amount Sold] ) )
            ),
            TotalAmountSold
        )

     

    Regards,

    Owen

2 Replies

  • Hi Anonymous 

    Yes, that's exactly the idea.

     

    In DAX, I would write something like this:

     

    Average days sold-paid =
    VAR TotalAmountSold =
        SUM ( Sales[Amount Sold] )
    RETURN
        DIVIDE (
            SUMX ( Sales, ( Sales[Day Paid] - Sales[Day Sold] ) * Sales[Amount Sold] ),
            TotalAmountSold
        )

     

    Another version that could improve performance depending on distribution of your dates, especially if you have the same pairs of dates occurring repeatedly:

    Average days sold-paid =
    VAR TotalAmountSold =
        SUM ( Sales[Amount Sold] )
    RETURN
        DIVIDE (
            SUMX (
                SUMMARIZE ( Sales, Sales[Day Paid], Sales[Day Sold] ),
                ( Sales[Day Paid] - Sales[Day Sold] )
                    * CALCULATE ( SUM ( Sales[Amount Sold] ) )
            ),
            TotalAmountSold
        )

     

    Regards,

    Owen

    • Anonymous's avatar
      Anonymous
      Not applicable

      Thanks Bro, you were awesome! It worked perfect