Forum Discussion

Catman's avatar
Catman
Frequent Visitor
1 year ago
Solved

Calculating Weighted Average

I would like to calculate the weighted average value for each customer like below:

I need to calculate the Total Amount by customer and the weight %, then I can multiply by the Payment Days to obtain the weighted average.

Working      
CustomerInvoiceTotal Amount by CustomerAmount/TotalAmountPaymentdaysAverage Payment Days by Customer
A10001900,000.0010.2054%91,848909
A10002900,000.0037.5477%337,9294517
A10003900,000.004.9367%44,430904
A10004900,000.0039.5216%355,6954518
A10005900,000.007.7886%70,097907
    900,000 55

 

In the summary should be shown:

CustomerAverage Payment DaysTotal Amount
A55900,000

 

Any help is appreciated, thanks!

  • Anonymous's avatar
    Anonymous
    1 year ago

    Hi Catman ,
    Thank you for sharing the update!
    It might happening because the total amount by customer is being calculated at the invoice level instead of staying fixed for the customer. This happens when the visual includes invoice-level detail, and the measure does not ignore that context. To get the right weight % and average payment days, the total amount should remain the same across all invoices for a customer. Also, since your Customer and Invoice tables are separate, just make sure there is a proper relationship between them.
    Hope this helps.
    Thank you.

14 Replies

  • Catman 

    Create a new measure for Total Amount by Customer:

    TotalAmountByCustomer = CALCULATE(SUM('Table'[Amount]), ALLEXCEPT('Table', 'Table'[Customer]))

     

    Create a new column for Amount/Total:

    AmountTotalPercentage = 'Table'[Amount] / 'Table'[TotalAmountByCustomer]

     

    Create a new column for Weighted Payment Days:

    WeightedPaymentDays = 'Table'[AmountTotalPercentage] * 'Table'[Paymentdays]

     

    Create a new measure for Average Payment Days by Customer:

    AveragePaymentDaysByCustomer = SUMX('Table', 'Table'[WeightedPaymentDays])

     

    Create a summary table to display the results:
    Add a table visual to your report.
    Add the Customer column.
    Add the AveragePaymentDaysByCustomer measure.
    Add the TotalAmountByCustomer measure.

    • Catman's avatar
      Catman
      Frequent Visitor

      Hi,

      By new column, is it the same as creating a new measure?

      I can't seem to get the percentage to work. In the working table, the Total Amount shows only the individual amount when I include each invoice and payment Days value. Or does it only work in the summary?

       

      I get the following result, I would expect the Total Amount to be 900,000

      CustomerInvoiceAmountTotal AmountPaymentdaysAmount/Total
      A

      10001

      91,848

      91,848

      90100%
      A10002337,930337,93045100%
      A

      10003

      44,43044,43090100%
      A10004355,695355,69545100%
      A1000570,09770,09790100%

       

    • Catman's avatar
      Catman
      Frequent Visitor

      Hi, how can I upload an excel in this post? I have the calculation data in excel or do I need to open a new post? Sorry I am quite new to this fabric community. Thanks.

  • Hi,

    Which of those columns in Table1 are input columns?  HOw did you calculate the last column in Table1?

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi Catman ,
    Thank you community members for the helpful insights!
    Following up to check whether you got a chance to review the suggestion given.If it helps,consider accepting the helpful answer as solution,it will be helpful for other members of the community who have similar problems as yours to solve it faster.
    For precise help,could you please sample data and expected output.Glad to help.

    Thank you.

    Regards,
    Pallavi.

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi Catman ,
    I hope the suggested solution worked for you. If your issue is resolved, kindly accept the helpful post as a solution — it helps the community identify helpful answers more easily.If still facing issues, feel free to reachout!
    Thank you.

    Regards,
    Pallavi G.