cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
ThePoulsen Frequent Visitor
Frequent Visitor

Add count to Dynamic ABC analysis

I have followed this guide https://www.daxpatterns.com/abc-classification-dynamic/ in order to create a dynamic ABC model to illustrate our spend by supplier (Slightly modified code below)

 

I can now line up the ABC class, and group by supplier region (from supplier dimension table) and get the spend amount no problem.

I can however not get a distinct count of the suppliers within each ABC class, it appears I need some sort of relation as the result is the same for each category.

 

SupplierABC = 
var MinLowerBoundary = MIN ( ABC_Classification[Lower])
var MaxUpperBoundary = Max ( ABC_Classification[Upper])
RETURN
CALCULATE (
    [Spend];
    VALUES ( Dim_Supplier[Supplier_Key] );
    FILTER (
        CALCULATETABLE (
            ADDCOLUMNS (
                ADDCOLUMNS (
                    VALUES ( Dim_Supplier[Supplier_Key] );
                    "OuterValue"; [Spend]
                );
                "CumulatedSalesPercentage"; DIVIDE (
                    SUMX (
                        FILTER (
                            ADDCOLUMNS (
                                VALUES ( Dim_Supplier[Supplier_Key] );
                                "InnerValue"; [Spend]
                            );
                            [InnerValue] >= [OuterValue]
                        );
                        [InnerValue]
                    );
                    CALCULATE (
                        [Spend];
                        VALUES ( Dim_Supplier[Supplier_Key] )
                    )
                )
            );
            ALL ( 'Dim_Supplier' )
        );
        [CumulatedSalesPercentage] > MinLowerBoundary
            && [CumulatedSalesPercentage] <= MaxUpperBoundary
    )
)

Any ideas?

1 ACCEPTED SOLUTION

Accepted Solutions
ThePoulsen Frequent Visitor
Frequent Visitor

Re: Add count to Dynamic ABC analysis

It didn't quite work

 

This solution however did.

 

SupplierABC = 
var MinLowerBoundary = MIN ( ABC_Classification[Lower])
var MaxUpperBoundary = Max ( ABC_Classification[Upper])
RETURN
CALCULATE (
    COUNTDISTINCT(Dim_Supplier[Supplier_Key]);
    VALUES ( Dim_Supplier[Supplier_Key] );
    FILTER (
        CALCULATETABLE (
            ADDCOLUMNS (
                ADDCOLUMNS (
                    VALUES ( Dim_Supplier[Supplier_Key] );
                    "OuterValue"; [Spend]
                );
                "CumulatedSalesPercentage"; DIVIDE (
                    SUMX (
                        FILTER (
                            ADDCOLUMNS (
                                VALUES ( Dim_Supplier[Supplier_Key] );
                                "InnerValue"; [Spend]
                            );
                            [InnerValue] >= [OuterValue]
                        );
                        [InnerValue]
                    );
                    CALCULATE (
                        [Spend];
                        VALUES ( Dim_Supplier[Supplier_Key] )
                    )
                )
            );
            ALL ( 'Dim_Supplier' )
        );
        [CumulatedSalesPercentage] > MinLowerBoundary
            && [CumulatedSalesPercentage] <= MaxUpperBoundary
    )
)
2 REPLIES 2
Super User
Super User

Re: Add count to Dynamic ABC analysis

Hi,

Does this work?

SupplierABC = 
var MinLowerBoundary = MIN ( ABC_Classification[Lower])
var MaxUpperBoundary = Max ( ABC_Classification[Upper])
RETURN
COUNTROWS (
    VALUES ( Dim_Supplier[Supplier_Key] );
    FILTER (
        CALCULATETABLE (
            ADDCOLUMNS (
                ADDCOLUMNS (
                    VALUES ( Dim_Supplier[Supplier_Key] );
                    "OuterValue"; [Spend]
                );
                "CumulatedSalesPercentage"; DIVIDE (
                    SUMX (
                        FILTER (
                            ADDCOLUMNS (
                                VALUES ( Dim_Supplier[Supplier_Key] );
                                "InnerValue"; [Spend]
                            );
                            [InnerValue] >= [OuterValue]
                        );
                        [InnerValue]
                    );
                    CALCULATE (
                        [Spend];
                        VALUES ( Dim_Supplier[Supplier_Key] )
                    )
                )
            );
            ALL ( 'Dim_Supplier' )
        );
        [CumulatedSalesPercentage] > MinLowerBoundary
            && [CumulatedSalesPercentage] <= MaxUpperBoundary))

If not, then share a dataset and show the expected result.

ThePoulsen Frequent Visitor
Frequent Visitor

Re: Add count to Dynamic ABC analysis

It didn't quite work

 

This solution however did.

 

SupplierABC = 
var MinLowerBoundary = MIN ( ABC_Classification[Lower])
var MaxUpperBoundary = Max ( ABC_Classification[Upper])
RETURN
CALCULATE (
    COUNTDISTINCT(Dim_Supplier[Supplier_Key]);
    VALUES ( Dim_Supplier[Supplier_Key] );
    FILTER (
        CALCULATETABLE (
            ADDCOLUMNS (
                ADDCOLUMNS (
                    VALUES ( Dim_Supplier[Supplier_Key] );
                    "OuterValue"; [Spend]
                );
                "CumulatedSalesPercentage"; DIVIDE (
                    SUMX (
                        FILTER (
                            ADDCOLUMNS (
                                VALUES ( Dim_Supplier[Supplier_Key] );
                                "InnerValue"; [Spend]
                            );
                            [InnerValue] >= [OuterValue]
                        );
                        [InnerValue]
                    );
                    CALCULATE (
                        [Spend];
                        VALUES ( Dim_Supplier[Supplier_Key] )
                    )
                )
            );
            ALL ( 'Dim_Supplier' )
        );
        [CumulatedSalesPercentage] > MinLowerBoundary
            && [CumulatedSalesPercentage] <= MaxUpperBoundary
    )
)

Helpful resources

Announcements
Community Kudopalooza

Win Power BI Swag with Community Kudopalooza!

Each week, complete activities and be qualified in the drawing for cool Power BI Swag.

Summit North America

Power Platform Summit North America

Register by September 5 to save $200

Virtual Launch Event

Microsoft Business Applications Virtual Launch Event

Watch the event on demand for an in-depth look at the new innovations across Dynamics 365 and the Microsoft Power Platform.

MBAS Gallery

Watch Sessions On Demand!

Continue your learning in our online communities.

Users Online
Currently online: 252 members 2,631 guests
Please welcome our newest community members: