Forum Discussion

Avi's avatar
Avi
New Member
9 years ago
Solved

Bucketing Cumulative Total using DAX

Hi

 

How can I represent the following using DAX.

I am trying to Bucket the following Sales Quantity per Customer:

 

CustomerQuantity
A0
A200
A300
B100
C80
C20
D50
D25
D25
D0
TOTAL800

 

and represent the following in Buckets of 3 as Top 20%, Mid 60% and Bottom 20% of the Total as below:

 

 BucketQtyQty %
Top 20%50063%
Mid 60% 20025%
Bottom 20% 10013%
TOTAL800100%

 

Thanks in advance.

  • Hi Avi,

     

    You can create a table like below:

     

    Table 2 = SUMMARIZE('Table1','Table1'[Customer],"Total",SUM(Table1[Quantity]))

     

    Then create two measures below:

     

    Qty = var MA=CALCULATE(MAX('Table 2'[Total]),ALL('Table 2'))
    var Mi=CALCULATE(Min('Table 2'[Total]),ALL('Table 2'))
    Return
    IF(MAX('Table 2'[Total])=MA || MAX('Table 2'[Customer])="D",SUM('Table 2'[Total]),CALCULATE(SUM('Table 2'[Total]),ALL('Table 2'))-MA-Mi )

     

    Qty% = var t=CALCULATE(SUM('Table 2'[Total]),ALL('Table 2'))
    return 
    DIVIDE([Qty],t)

     

     

    Please downlaod attached .pbix file to have a look.

     

    Best Regards,
    Qiuyun Yu

1 Reply

  • v-qiuyu-msft's avatar
    v-qiuyu-msft
    Community Support

    Hi Avi,

     

    You can create a table like below:

     

    Table 2 = SUMMARIZE('Table1','Table1'[Customer],"Total",SUM(Table1[Quantity]))

     

    Then create two measures below:

     

    Qty = var MA=CALCULATE(MAX('Table 2'[Total]),ALL('Table 2'))
    var Mi=CALCULATE(Min('Table 2'[Total]),ALL('Table 2'))
    Return
    IF(MAX('Table 2'[Total])=MA || MAX('Table 2'[Customer])="D",SUM('Table 2'[Total]),CALCULATE(SUM('Table 2'[Total]),ALL('Table 2'))-MA-Mi )

     

    Qty% = var t=CALCULATE(SUM('Table 2'[Total]),ALL('Table 2'))
    return 
    DIVIDE([Qty],t)

     

     

    Please downlaod attached .pbix file to have a look.

     

    Best Regards,
    Qiuyun Yu